在函式 (def wky(event)) 中,如果沒有“全域 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 Files\Python310\lib\tkinter\__init__.py", line 1921, in __call__return self.func(*args)
File "c:\Users\JS\Desktop\PYTHONWORKSPACE\movingproject\1_name.py", line 145, in wky
ab = datetime.strptime(ab, "%Y-%m-%d")
TypeError: strptime() argument 1 must be str, not Entry
uj5u.com熱心網友回復:
正如錯誤所說,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()])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/430538.html
