wxpython - 如何从 class 之外刷新列表框?
wxpython - How to refresh listbox from outside of class?
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)
*在我的应用程序中,我有两个面板.. class 一个代表包含按钮的侧边栏面板。 Class 二代表包含列表框的主面板。
如何通过按钮调用函数(在本例中为从列表框中删除项目),其父项属于另一个 class(两个)?*
一种方法是使用 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))
那是说有很多方法可以做到这一点
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)
*在我的应用程序中,我有两个面板.. class 一个代表包含按钮的侧边栏面板。 Class 二代表包含列表框的主面板。
如何通过按钮调用函数(在本例中为从列表框中删除项目),其父项属于另一个 class(两个)?*
一种方法是使用 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))
那是说有很多方法可以做到这一点