@hackhud

Ошибка в tkinter, как решить?

пишу свою одну из первых программ : таймер для игры,
Хочу что-бы при нажатии кнопки начинался таймер справа от этой же кнопки в интерфейсе на кол-во минут которое указано на ползунке, вроде все получилось, но мне нужно что бы в функцию передавалось 2 значение : само кол-во минут(это я сделал) и наименование самого таймера в интерфейсе что-бы именно он начинал работать. Вот ошибка:
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Артем\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:\Users\Артем\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 839, in callit
    func(*args)
TypeError: countdown() missing 1 required positional argument: 'time'
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Артем\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:\Users\Артем\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 839, in callit
    func(*args)
TypeError: countdown() missing 1 required positional argument: 'time'

Вот код:
bi = Button(frame, text="Зияющий",command = lambda : countdown(e.get()*60,t1))
bi.place(relx=0, rely=0, relwidth=0.5, relheight=0.05)
bz = Button(frame, text="Иджу",command = lambda : countdown(e1.get()*60,t2))
bz.place(relx=0, rely=0.06, relwidth=0.5, relheight=0.05)
t1 = Label(root)
t1['bg'] = "black"
t1['fg'] = 'white'                                                                                                                 
t1['text'] = '00:00'
t2 = Label(root)
t2['bg'] = "black"
t2['fg'] = 'white'                                                                                                                 
t2['text'] = '00:00'
t3 = Label(frame, text="00:00", bg='black', fg='white')
t1.place(relx=0.28, rely=0.095, relwidth=0.045, relheight=0.05)
t2.place(relx=0.28, rely=0.145, relwidth=0.045, relheight=0.05)
t3.place(relx=0.8, rely=0.12, relwidth=0.25, relheight=0.05)
#t1['text'] = datetime.fromtimestamp(count).strftime("%M:%S")
def countdown(count,time):
        time['text'] = datetime.fromtimestamp(count).strftime("%M:%S")
        if count  > 0:
            root.after(1000, countdown, count-1)
root.mainloop()
  • Вопрос задан
  • 376 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
у вас же четко указано
TypeError: countdown() missing 1 required positional argument: 'time'

функция countdown не обнаружила еще один аргумент time.

скорее всего проблема в этой строке
root.after(1000, countdown, count-1)
тут передается объект этой самой функции и аргументы к ней. Вы же передали только один аргумент.
Видимо, надо сделать как-то так
root.after(1000, countdown, count-1, time)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы