簡體   English   中英

Tkinter缺少正論證

[英]Tkinter Missing possitional argument

我正在嘗試制作一個GUI,在按下數字時會告訴我: 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):停止拋出該錯誤味精嗎? 哪里有問題。

這是代碼

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()

您的shukkin將一個事件視為arg,但是after方法沒有生成任何事件,因此會出錯。

只需對shukkin函數進行少量更改即可使event可選:

def shukkin(event=None):
    txt2.set("1")
    fm3.after(100, shukkin)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM