Ткинтер Отсутствует возможный аргумент - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь создать графический интерфейс, который будет сообщать мне, когда я нажимаю цифры: 1,2,3,4, работает нормально, но выдает сообщение об ошибке в фоновом режиме, когда я нажимаю кнопку. Похоже, это

    xception in Tkinter callback
    Traceback (most recent call last):
    File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
    return self.func(*args)
    File "/usr/lib/python3.7/tkinter/__init__.py", line 749, in callit
    func(*args)
    TypeError: shukkin() missing 1 required positional argument: 'event'

Может кто-нибудь сказать, пожалуйста, как заставить def shukkin(event): перестать выдавать эту ошибку msg? Где проблема.

Вот код

from tkinter import *
from tkinter import ttk
from tkinter import font
from tkinter import Button as bt
import time

def quit(*args):
    root.destroy()

def show_time():
    txt.set(time.strftime("%H:%M:%S"))
    root.after(1000, show_time)

def shukkin(event):
    txt2.set("1")
    fm3.after(100, shukkin)
def taikin(event):
    txt2.set("2")
    fm3.after(100, taikin)
def shuuchou(event):
    txt2.set("3")
    fm3.after(100, shuuchou)
def hoka(event):
    txt2.set("4")
    fm3.after(100, hoka)


root = Tk()
root.attributes("-fullscreen", True)
root.configure(background='black')
for i in range(10):
    root.bind(str(1), shukkin)
    root.bind(str(2), taikin)
    root.bind(str(3), shuuchou)
    root.bind(str(4), hoka)
root.bind("<Escape>", quit)
root.bind("x", quit)
root.after(1000, show_time)

fnt = font.Font(family='Helvetica', size=96, weight='bold')
fnt2 = font.Font(family='Helvetica', size=30)
txt = StringVar()
txt.set(time.strftime("%H:%M:%S"))
fm = Frame(root)
fm.configure(background='black')
lbl = ttk.Label(fm, textvariable=txt, font=fnt, foreground="#469aff", background="black").pack(anchor=NW,padx=40, pady=40)
fm.pack(side=LEFT, fill=BOTH)

fm2 = Frame(root)
lbl = ttk.Label(fm2, text="ボタンを押して下さい \n 1:出勤 \n 2:退勤 \n 3:出張 \n 4:その他",
                font=fnt2, foreground="#469aff", background="black").pack(side=RIGHT)
fm2.pack(side=TOP, padx=8, pady=130)


fm3 = Frame(root,  width=500, height=500)
txt2 = StringVar()
but = ttk.Label(fm3, textvariable=txt2, font=fnt, foreground="#469aff", background="black").pack()
fm3.pack(side=TOP)




root.mainloop()

1 Ответ

1 голос
/ 27 мая 2019

Ваш shukkin принимает событие как аргумент, но событие after не генерируется, следовательно, ошибка.

Просто внесите небольшое изменение в shukkin функцию, чтобы сделать event необязательным:

def shukkin(event=None):
    txt2.set("1")
    fm3.after(100, shukkin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...