Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示另一个窗口wxpython?_Python_Wxpython - Fatal编程技术网

显示另一个窗口wxpython?

显示另一个窗口wxpython?,python,wxpython,Python,Wxpython,我一直在网上浏览,但我不确定是否有办法在两个单独的窗口中显示wxPython中的两个类。我们可以在它们之间进行通信吗(比如一个类是对话框,另一个是主类) 我想我是在使用Show()之前做的,但我不知道如何重复这一点 所以基本上我希望能够有一个对话框,但是使用一个类来代替。这将比使用模态对话框更强大 谢谢这里有一个简单的两帧通信示例: 诀窍在于发送一个对象引用以在帧之间共享,或者在另一帧内部创建一个(如本例中所示),或者通过一个公共父帧。 代码是: import wx class MainFr

我一直在网上浏览,但我不确定是否有办法在两个单独的窗口中显示wxPython中的两个类。我们可以在它们之间进行通信吗(比如一个类是对话框,另一个是主类)

我想我是在使用
Show()
之前做的,但我不知道如何重复这一点

所以基本上我希望能够有一个对话框,但是使用一个类来代替。这将比使用模态对话框更强大


谢谢

这里有一个简单的两帧通信示例:

诀窍在于发送一个对象引用以在帧之间共享,或者在另一帧内部创建一个(如本例中所示),或者通过一个公共父帧。 代码是:

import wx

class MainFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, size=(150,100), title='MainFrame')
        pan =wx.Panel(self)
        self.txt = wx.TextCtrl(pan, -1, pos=(0,0), size=(100,20), style=wx.DEFAULT)
        self.but = wx.Button(pan,-1, pos=(10,30), label='Tell child')
        self.Bind(wx.EVT_BUTTON, self.onbutton, self.but)
        self.child = ChildFrame(self)
        self.child.Show()

    def onbutton(self, evt):
        text = self.txt.GetValue()
        self.child.txt.write('Parent says: %s' %text)


class ChildFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, None, size=(150,100), title='ChildFrame')
        self.parent = parent
        pan = wx.Panel(self)
        self.txt = wx.TextCtrl(pan, -1, pos=(0,0), size=(100,20), style=wx.DEFAULT)
        self.but = wx.Button(pan,-1, pos=(10,30), label='Tell parent')
        self.Bind(wx.EVT_BUTTON, self.onbutton, self.but)

    def onbutton(self, evt):
        text = self.txt.GetValue()
        self.parent.txt.write('Child says: %s' %text)


if __name__ == "__main__":

    App=wx.PySimpleApp()
    MainFrame().Show()
    App.MainLoop()

您还可以使用pubsub在两个帧之间进行通信。我在这篇文章中展示了一种方法:

如果不希望第一帧隐藏自身,只需删除其中包含hide()的行