[英]Tkinter Entry Multiple Vaildations
我正在嘗試對 key和focusout 進行驗證,以便將條目限制為允許的字符,並且當用戶集中注意力(留下有效條目)時,我可以調用 function。
這樣的事情可能嗎?
import tkinter as tk
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
vcmd = (self.register(self.on_validate), '%S')
vcmd2 = (self.register(self.if_valid), '%s')
# This is the meat of the question; looking to do something like
self.entry = tk.Entry(self,
validate="key",
validate2="focusout",
validatecommand=vcmd,
validate2command=vcmd2)
self.text = tk.Text(self, height=10, width=40)
self.entry.pack(side="top", fill="x")
self.text.pack(side="bottom", fill="both", expand=True)
def on_validate(self, S):
# Disallow anything but binary string
if S == '1' or '0':
return True
else:
self.bell()
return False
def if_valid(self, s):
if len(s) == 3:
self.my_function(s)
return True
else:
return False
def my_function(self, value):
# send value somewhere
pass
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
'focus' 驗證 Entry 小部件何時獲得或失去焦點(參見第 53 節,“焦點:路由鍵盤輸入”)。
'focusin' 驗證小部件何時獲得焦點。
'focusout' 在小部件失去焦點時驗證。
'key' 每當任何擊鍵更改小部件的內容時驗證。
'all' 在上述所有情況下驗證。
'無' 關閉驗證。 這是默認選項值。 請注意,這是字符串 'none',而不是特殊的 Python 值 None。
如果您必須只驗證focusout
和key
,那么您可以使用all
然后在您的驗證方法中,您可以簡單地調用.get_focus()
方法來查看焦點是否在框上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.