使用基于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”。我假设这是因为该变量是在类函数中创建的,因此是一个局部变量-因此如何在该函数之外使用该变量?你知道吗
抱歉,如果这个问题是冗长的,但我已经找到了一个答案,但没有找到一个。你知道吗
非常感谢。你知道吗
为什么不
return MainGameWindow
从LoginUser
存储到你想要的地方呢?你知道吗如果您不想这样做,可以选择(不推荐)
这将
MainGameWindow
放在全局命名空间中。你知道吗不相关的,
if os.path.isfile(self.logdetails) == True:
应该只是if os.path.isfile(self.logdetails):
。你知道吗相关问题 更多 >
编程相关推荐