在导入的模块之间传递变量/函数

时间:2010-06-29 15:09:05

标签: python import module wxpython

我要扔掉一些伪代码。然后解释我想要什么,因为我不知道如何做到。

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中使用它们。

2 个答案:

答案 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