-
在函数(def wky(event((中,如果没有"global ab",它将发生下一个错误消息:"UnboundLocalError"。然后,我用了这个词(global ab(。但是,我想知道这些话是必要的吗?不声明全局在函数中,我们不能使用局部变量?
-
在函数中,是否有错误的句子?我用了字典。我想Dictionary中提供了适当的值。但是,当我运行以下代码时,发生错误消息。我错过了什么?
-
总之,这段代码是标签的值来自ab变量。ab变量的初始值为None。用户立即输入任何值,然后按"Enter"键后自动插入标签值。
我希望你的仁慈帮助~^^
在这段文字下面,我写下了代码。
from tkinter import *
from datetime import datetime
root = Tk()
root.title("Moving")
root.geometry("640x480")
root.resizable(False, False)
def wky(event):
global ab
ab = datetime.strptime(ab, "%Y-%m-%d")
dateDict = {0:"Mon", 1:"Tue", 2:"Wed", 3:"Thu", 4:"Fri", 5:"Sat", 6:"Sun"}
dateDict[ab.weekday()]
label.config(text = dateDict[ab.weekday()])
ab = Entry(root)
ab.bind("<Return>", wky)
ab.pack()
label=Label(root)
label.pack()
root.mainloop()
Exception in Tkinter callback
Traceback (most recent call last):
File "C:Program FilesPython310libtkinter__init__.py", line 1921, in __call__return self.func(*args)
File "c:UsersJSDesktopPYTHONWORKSPACEmovingproject1_name.py", line 145, in wky
ab = datetime.strptime(ab, "%Y-%m-%d")
TypeError: strptime() argument 1 must be str, not Entry
正如错误所说,ab
是Entry
小部件,不能在strptime()
中使用。您需要使用Entry
小部件中的值。
也最好使用另一个局部变量来存储strptime()
的结果,而不是使用ab
:
def wky(event):
date = datetime.strptime(ab.get(), "%Y-%m-%d")
dateDict = {0:"Mon", 1:"Tue", 2:"Wed", 3:"Thu", 4:"Fri", 5:"Sat", 6:"Sun"}
#dateDict[date.weekday()] # this line is useless
label.config(text=dateDict[date.weekday()])