繁体   English   中英

显示另一个窗口wxpython?

[英]Show another window wxpython?

我一直在寻找互联网,但我不确定是否有办法在2个独立的窗口中显示wxPython中的2个类。 我们可以在它们之间进行通信(比如一个类是对话框而另一个类是主类)?

我想我在使用Show()之前做过这个,但我不知道如何重复这个。

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

谢谢

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

在此输入图像描述

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

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在两个帧之间进行通信。 我在本文中展示了一种方法: http//www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM