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

2024-04-19 15:44:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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:global name”MainGameWindow“is not defined”。我假设这是因为该变量是在类函数中创建的,因此是一个局部变量-因此如何在该函数之外使用该变量?你知道吗

抱歉,如果这个问题是冗长的,但我已经找到了一个答案,但没有找到一个。你知道吗

非常感谢。你知道吗


Tags: 实例方法selfmastertargetgetdefusername
1条回答
网友
1楼 · 发布于 2024-04-19 15:44:01

为什么不return MainGameWindowLoginUser存储到你想要的地方呢?你知道吗

如果您不想这样做,可以选择(不推荐)

global MainGameWindow
MainGameWindow = MainGameClass(root)

这将MainGameWindow放在全局命名空间中。你知道吗

不相关的,if os.path.isfile(self.logdetails) == True:应该只是if os.path.isfile(self.logdetails):。你知道吗

相关问题 更多 >