wxpython - 如何从类外刷新列表框?

时间:2015-07-14 18:44:54

标签: python wxpython wxwidgets

class ListCtrl(wx.ListCtrl):

    def __init__(self, parent):
        super(ListCtrl, self).__init__(parent,size=(1200,700))

    def delete_items(self):
        self.DeleteAllItems()

class One(wx.Panel):
    b =wx.Button()
    b.bind(**Listbox.delete_items**)


class Two(wx.Panel):
    self.lb = Listbox(self)
  1. *在我的应用程序中,我有两个面板..类One表示包含按钮的侧边栏面板。第二类表示包含列表框的主面板。

  2. 如何通过按钮(在这种情况下从列表框中删除项目)调用函数,其父项属于另一个类(二)?*

1 个答案:

答案 0 :(得分:1)

你可以这样做的一种方法是使用pub sub

from wx.lib.pubsub import Publisher
pub = Publisher()
all_options = "One Two Three".split()
class One(wx.Panel):
     def on_delete_button(self,evt):
         all_options.pop(0)
         pub.sendMessage("update.options",

class Two(wx.Panel):
     def __init__(self,*args,**kwargs):
        self.lb = Listbox(self)
        self.lb.SetItems(all_options)
        pub.subscribe("update.options",lambda e:self.lb.SetItems(e.data))

表示有很多方法可以实现这个目标