使用在另一个类中的类方法中创建的变量

时间:2016-02-06 21:53:56

标签: python class tkinter

使用基于OOP的tkinter,我希望在另一个类中使用在类方法中创建的变量,即不是创建它的那个。

我想使用的变量是' MainGameWindow',我正在处理的类实例的标识符。它最初是在课程“LoginWindow”中创建的。在方法' LoginUser'中,如下所示:

def LoginUser(self):
    self.username=self.entry_username.get()
    self.usertg=self.entry_tutorg.get()
    self.logdetails=str(self.username)+' '+str(self.usertg)+'.txt'
    if os.path.isfile(self.logdetails)==True:
        #opening of main window
        self.master.destroy()
        root=Tk()
        MainGameWindow=MainGameClass(root)

我希望在另一个类' OptionsClass'中使用这个变量,以便在' MainGameClass'中执行一个类方法。 (' MainGameWindow'实例)使用命令:

  self.radio_targetapp1=Radiobutton(self.master,text="Standard Mole",variable=self.app_var,value="placeholder1.gif",command=lambda:MainGameWindow.changeApp("placeholder1.gif"))

这是我试图执行的方法:

    def changeApp(self,changeto):
       self.target_photo=PhotoImage(file=changeto)
       self.coords=self.canvas.coords(self.mole_target)
       self.theimg=self.canvas.create_image(self.coords[0],self.coords[1],image=self.target_photo)

在当前状态下,我收到错误' NameError:全局名称' MainGameWindow'未定义'。我假设这是因为变量是在类函数内创建的,因此是局部变量 - 因此我如何在此函数之外使用此变量?

道歉,如果这个问题啰嗦,但是我已经找到了答案,却找不到答案。

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

为什么不return MainGameWindow来自LoginUser并将其存储在您想要的位置?

如果您不想这样做,另一种选择(不推荐)是

global MainGameWindow
MainGameWindow = MainGameClass(root)

这会将MainGameWindow放入全局命名空间。

无关,if os.path.isfile(self.logdetails) == True:应该只是if os.path.isfile(self.logdetails):