Доступ к аттрибутам класса после выполнение метода нажатия клавиши Python Tkinter

Имеется класс MainMenu в котором находится интерфейс окна и кнопки для которых есть методы при нажатии на них в которых происходит изменение атрибуттов класса, при создании объекта и попытке вытащить эти аттрибуты, возвращается значение которые было при инициализации, а не после вызова метода нажатия кнопки так как изначально кнопка не была нажата и значение уже было передано.

from tkinter import *
import random
from tkinter import messagebox as mb
root = Tk()
root.title('Хрестики нулики')
welcome_window = Toplevel(root)
welcome_window.title("welcome")
root.withdraw()
#######################
class MainMenu:
    def __init__(self,window):
        self.window = window
        title = Label(self.window,text = 'Хрестики-нулики', font=("Comic Sans MS",24,'bold'))
        title.pack()
        choose = Label(self.window,text = 'Виберіть режим гри', font=("Comic Sans MS",16))
        choose.pack()
        self.window.geometry('600x400')
        two_players = Button(self.window,text= 'Два гравця')
        bot = Button(self.window,text= 'Компьютер')
        line = Button(self.window,text= 'Лінія')
        coins = Button(self.window,text= 'Очки')
        two_players.place(x= 360, y = 140)
        bot.place(x= 180, y = 140)
        line.place(x= 360, y = 180)
        coins.place(x= 180, y = 180)
        self.players = 1
        self.mode = 'line'
        two_players.bind("<Button-1>",self.two_players)
        line.bind("<Button-1>",self.line)
        coins.bind("<Button-1>",self.points)


    def two_players(self,event):
        self.players = 2 
        print(self.players)

    def points(self,event):
        self.mode = 'points'
        self.window.destroy()
        root.deiconify()
    def line(self,event):
        self.mode = 'line'
        self.window.destroy()
        root.deiconify()
    def returning(self):
        return self.players, self.mode



menu = MainMenu(welcome_window)
players,mode = menu.returning()

При попытке вернуть self.players возвращается 1 , хотя необходимо 2. Как получить значение аттрибута после выполнения метода two_players?


Ответы (0 шт):