小编典典

显示另一个窗口wxpython?

python

我一直在寻找Internet,但不确定是否可以在2个单独的窗口中显示wxPython中的2个类。并且我们可以在它们之间进行交流(例如,一个类是对话框,另一类是对话框)吗?

我想我是在使用之前完成此操作的,Show()但是我不确定如何重复此操作。

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

谢谢


阅读 120

收藏
2021-01-16

共1个答案

小编典典

在这里,您有一个简单的示例,说明了两个框架之间的通信:

在此处输入图片说明

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

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()
2021-01-16