簡體   English   中英

Tkinter 自動更新按鈕 state

[英]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"

要知道何時啟用按鈕,您需要驗證輸入字段。 (例如,我的樹脂計算器程序會進行輸入驗證。)

但簡而言之,它涉及:

  1. 使用tk.TK object 注冊驗證 function。
  2. 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.

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