tkinter/datetime/weekday/dictionary/ type error : strptime() argument 1 must be str, not entry

tkinter/datetime/weekday/dictionary/ type error : strptime() argument 1 must be str, not entry

  1. 在函数(def wky(event))中,没有'global ab',它会发生下一个错误 消息:'UnboundLocalError'。然后,我用了那个词(global ab)。 但是,我想知道那句话是必要的吗?没有声明全局 在函数中,我们不能使用局部变量吗?

  2. 在函数中,有错句吗?我用的是词典。我认为 适当的值出现在字典中。但是,当我 运行 下面的代码时, 它发生了错误信息。我想念什么?

  3. 综上所述,这段代码是label的值来自于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 Files\Python310\lib\tkinter\__init__.py", line 1921, in __call__return self.func(*args)
  File "c:\Users\JS\Desktop\PYTHONWORKSPACE\movingproject_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()])