python - 显示另一个窗口 wxpython?

标签 python wxpython

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

我想我在使用 Show() 之前做了这个,但我不确定如何重复这个。

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

谢谢

最佳答案

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

enter image description here

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

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()

关于python - 显示另一个窗口 wxpython?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263513/

相关文章:

python - 使用 tweepy 获取用户的整个推特时间轴

python - 如何在 SQLAlchemy 中使用数学方程作为过滤器

python - 从哪里开始解析 JSON?

python - 难以理解 wxPython 中的 wx.Sizer

python - 是否可以将参数传递给事件绑定(bind)?

python - 如何制作一个只有图像并且没有额外像素和图像周围边框的wxpython位图按钮

python - 列表索引超出范围错误: webscraping with Beautifoul Soup

python - 在 Django Rest 中捕获 URL 参数

python - 如何在 Python 中检查操作系统是否是 Vista?

python - WxPython:派生 wx.ListItem 但 wx.ListCtrl 只返回旧类