【问题标题】:Using variables declared in functions and use them in another function in a different class使用在函数中声明的变量并在不同类的另一个函数中使用它们
【发布时间】:2013-05-01 20:11:39
【问题描述】:
#!/usr/bin/python
import MainPanel
import wx

########################################################################
class OtherFrame(wx.Frame):##open PDB frame
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, wx.ID_ANY, "Secondary Frame")
        panel = wx.Panel(self)##create panel

        chain = wx.Button(panel, label = "OK", pos=(100,80),size=(53,25))##button create
        self.Bind(wx.EVT_BUTTON,self.getchain,chain)##bind event to button go to getchain method


    def getchain(self,event):
    global flag
    flag = 1


import OtherFrame

#######
class MainPanel(wx.Panel):##main frame
    """"""

     #----------------------------------------------------------------------
    def __init__(self, parent, size = (5000,5000)):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent, size = (5000,5000))
        self.frame = parent

        Publisher().subscribe(self.showFrame, ("show.mainframe"))

    def showFrame(self, msg):

    #------------------------------------------------------------------
        def createfigure():

       OtherF = OtherFrame.OtherFrame()
       OtherF.getchain()
       print flag

首先,由于代码超过 1000 行,我大大缩短了代码。 我想要做的是获取在getchain 中声明的变量并在def createfigure 中使用它们。他们来自不同的阶层。 目前我收到错误getchain() takes exactly 2 arguments (1 given) 有人可以告诉我哪里出错了,以及如何获取我在def getchain(self,event) 中使用的变量并在def createfigure 中使用它们

【问题讨论】:

  • 您的缩进看起来需要一点帮助;我会自己更正它,但如果你的原始代码是这样的,它也需要在那里更正。此外,您的问题似乎是您没有将 event 传递给您的 OtherF.getchain() 电话。您是在问如何访问该event

标签: python wxpython


【解决方案1】:

你不应该那样做。如果您真的非常想要,那么最好通过在变量前面加上“self.”来使它们成为类属性。因此,如果您想访问其他类中的“flag”变量,请将其设为“self.flag”。

然后您可以使用 OtherF.flag 访问它。但是,我认为如果您需要从其他类中获取某些内容,我建议您使用 pubsub 来传递它。这是一个教程:

【讨论】:

    【解决方案2】:

    当一个方法在python中被定义为使用“self”作为参数时,它所应用的对象被隐式地作为参数传递。然后,您声明的任何其他参数必须在括号中显式提供。在您提供的摘录的倒数第二行,您没有提供所需的参数“事件”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多