我要扔掉一些伪代码。然后解释我想要什么,因为我不知道如何做到。
File_A
class Panel_A(wx.Panel)
def __init__(self):
button_a = wx.Button(parent=self)
def onButton(self, event):
pass to list view
File_B
class Panel_B(wx.panel):
def __init__(self):
listview_a = wx.ListView(parent=self)
File_C
import File_A
import File_B
panel_a = Panel_A()
panel_b = Panel_B()
好的,我在一个模块中有一个面板,当我按下button_a时会搜索数据库。第二个模块中有一个列表视图。两个模块都导入到第三个模块中。我需要能够将搜索中的信息传递给另一个模块中的listview_a。我不知道如何做到这一点,因为所有对象都在File_C中声明,但我需要在File_A中使用它们。
答案 0 :(得分:1)
使用delegate design pattern: (在实例化Panel_A对象时将panel_b作为参数传递):
# File_A
class Panel_A(wx.Panel)
def __init__(self,panel_b):
self.panel_b=panel_b
button_a = wx.Button(parent=self)
def onButton(self, event):
pass to self.panel_b.listview_a
# File_B
class Panel_B(wx.panel):
def __init__(self):
listview_a = wx.ListView(parent=self)
# File_C
import File_A
import File_B
panel_b = Panel_B()
panel_a = Panel_A(panel_b)
您可能只希望传入ListView,而不是整个面板。我不了解你的情况,知道什么是最好的。
答案 1 :(得分:0)
您可以使用Observer pattern的简化版本:Panel_A类有listener
字段,其中fillView
方法获取列表,Panel_B实现了这样的方法。
在构建Panel_A和Panel_B之后,只需指定Panel_A对象的字段即可
并从self.listener.fillView(list)
方法
onButton