簡體   English   中英

Tkinter 進入多個驗證

[英]Tkinter Entry Multiple Vaildations

我正在嘗試對 keyfocusout 進行驗證,以便將條目限制為允許的字符,並且當用戶集中注意力(留下有效條目)時,我可以調用 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()

取自: https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/entry-validation.ZFC35FDC70D5FC69D269883A822C7

'focus' 驗證 Entry 小部件何時獲得或失去焦點(參見第 53 節,“焦點:路由鍵盤輸入”)。

'focusin' 驗證小部件何時獲得焦點。

'focusout' 在小部件失去焦點時驗證。

'key' 每當任何擊鍵更改小部件的內容時驗證。

'all' 在上述所有情況下驗證。

'無' 關閉驗證。 這是默認選項值。 請注意,這是字符串 'none',而不是特殊的 Python 值 None。

如果您必須只驗證focusoutkey ,那么您可以使用all然后在您的驗證方法中,您可以簡單地調用.get_focus()方法來查看焦點是否在框上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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