Используя tkinter на основе OOP, я хочу использовать переменную, созданную внутри метода класса в другом классе, то есть не тот, в котором он был создан.Использование переменной, созданной в методе класса в другом классе
Переменная, которую я хочу использовать, - это «MainGameWindow», идентификатор экземпляра класса, с которым я имею дело. Он изначально создавался внутри класса «пользователя появляется» в методе «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)
в своем нынешнем состоянии я получаю е rror 'NameError: глобальное имя «MainGameWindow» не определено ». Я предполагаю, что это потому, что переменная была создана внутри функции класса и, следовательно, является локальной переменной - как я могу использовать эту переменную вне этой функции?
Извините, если этот вопрос длинный, однако я искал ответ и не смог его найти.
Большое спасибо заранее.
Есть ли причина, по которой вы не использовали бы 'self.main_game_window = MainGameClass (root)'? У экземпляра 'LoginUser' будет атрибут' main_game_window'. – Kris