[英]Tkinter Auto-update button state
我正在構建一個非常基本的登錄系統。 我幾乎完成了它,但我有一個問題。 我需要檢查“注冊”按鈕以禁用,直到它的條目滿足某些條件。 像這樣的東西。 現在,我知道“while 循環”在 tkinter 中不起作用以及為什么。 這只是我想要做的一個例子? 有什么建議嗎?
您可以做的是創建注冊按鈕,但將 state 設置為禁用;
regbtn = ttk.Button(
root, text="Register",
command=do_register,
state=tk.DISABLED
)
稍后,您可以將regbtn
字典並修改 state:
regbtn["state"] = "enabled"
要知道何時啟用按鈕,您需要驗證輸入字段。 (例如,我的樹脂計算器程序會進行輸入驗證。)
但簡而言之,它涉及:
tk.TK
object 注冊驗證 function。Entry
小部件設置為在按鍵時進行驗證。例如,假設我們要驗證一個條目是一個數字。 為此,我們創建了一個 function,如下所示。 作為副作用,此驗證 function 根據數據的有效性啟用/禁用注冊按鈕:
def is_number(data):
"""Validate the contents of an entry widget as a float."""
try:
float(data)
except ValueError:
regbtn["state"] = "disabled"
return False
regbtn["state"] = "enabled"
return True
這個 function 接收入口小部件的內容,如果該數據有效則需要返回。
因此,首先我們注冊該驗證命令;
root = tk.TK()
vcmd = root.register(is_number)
然后,在創建按鈕時,我們將其設置為在按下某個鍵時調用驗證;
re = ttk.Entry(
parent,
validate="key",
validatecommand=(vcmd, "%P")
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.