美文网首页wxpython
wxpython 发布订阅,夸窗口传递信息

wxpython 发布订阅,夸窗口传递信息

作者: 大石猴 | 来源:发表于2018-06-25 11:01 被阅读0次

    我们经常会用到两个窗口之间互相传递信息,或者把一个窗口里,文本框输入的值,传递到另外一个frame的另外一个文本框里,
    这个时候,我们可以使用wxpython的pub/sub方法。

    test.py
    class Main(wx.App):
              def __init__(self):
                      #mainFrame 是用wxglade画的一个frame导出来的python文件
                       self.frame1 = mainFrame.MyFrame(None, wx.ID_ANY, "") 
                       self.frame1.Show()
                       self.children=test2.children()
                      #定义一个name1属性,值来自于窗口上的文本框控件
                       self.name1 = self.frame1.text_ctrl_1
                      #  离开焦点,就把fram1的文本框里的值传入children的另外一个文本框内
                      self.name1 .Bind(wx.EVT_COMMAND_KILL_FOCUS, self.save)  
                      #发布一个叫in_sync的主题,触发sync函数
                       pub.subscribe(self.sync, "in_sync")
    
              def sync(self, msg):
                      #给children的text_ctrl_2字段设置值
                      self.children.frame.text_ctrl_2.SetValue(msg)
            
              def save(self,evt):
                        value=self.name1.GetValue()
                        #调用一下in_sync方法,如果in_sync方法在别的class里,也是可以调用pub.sendMessage成功的
                        self.children.in_sync(value)
    
    
    
    test2.py
    class children(wx.App):
               def __init__(self):
                      #mainFrame 是用wxglade画的一个frame导出来的python文件
                       self.frame = mainFrame.MyFrame(None, wx.ID_ANY, "") 
                       self.frame.Show()
               def in_sync(text):
                     #订阅"in_sync"主题
                     wx.CallAfter(pub.sendMessage, "in_sync", msg=text)
    
    

    相关文章

      网友评论

        本文标题:wxpython 发布订阅,夸窗口传递信息

        本文链接:https://www.haomeiwen.com/subject/isbeyftx.html