Похоже, вы неправильно понимаете, как работает атрибут класса или что именно делает self.
.
Префикс self.
используется, чтобы сообщить классу, что определенная переменная или функция назначается в качестве атрибута или метода класса.
Здесь вы создали переменную в методе __init__
с именем timeLeft
, однако вы пытаетесь получить к ней доступ позже с помощью self.timeLeft
. Это не будет работать, поскольку timeLeft
был определен как локальная переменная только для метода __init__
.
Чтобы исправить это, просто убедитесь, что timeLeft
обновлено до self.timeLeft
в любом месте вашего кода, и с него все должно работать нормально.
Обновленный класс:
class PracticePage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.timeLeft = tk.Label(self,text= "")
backButton = ttk.Button(self, text="やり直す", command = lambda: controller.show_frame(StartPage))
homeButton = ttk.Button(self, text="サインアウト", command = lambda:controller.show_frame(SignInPage))
self.timeLeft.pack()
backButton.pack()
homeButton.pack()
self.start_count(120)
def start_count(self,t):
global mins
global secs
time = t
while time>0:
mins, secs = divmod(time,60)
mins = round(mins)
secs = round(secs)
self.timeLeft.config(text= str(mins) +"分"+ str(secs) +"秒")
time = time-1
if (time==0):
break