簡體   English   中英

Tkinter 驗證 Python 中的條目小部件

[英]Tkinter validation of Entry widgets in Python

我想知道如何驗證 tkinter 中條目小部件的輸入,以便僅容納一位數字和 (+/-) 符號。 這個小部件將接受用戶對原子的充電。 請在下面添加此代碼

class Onlyonedigit(ttk.Entry):
    def __init__(self, parent, *args, **kwargs):
      super().__init__(parent, *args, **kwargs)
      self.configure(
        validate='all',
        validatecommand=(self.register(self.validate_digit), '%P'),
        )
    def validate_digit(self, input):
      if input.isdigit():
        return True
      else:
        return False

提前致謝!

1.解決步驟


  1. 進口tkinter模塊
import tkinter
  1. 導入tkinter子模塊
from tkinter import * # (*) Asterisk symbol means import everything
  1. 定義callback function
def callback(input):
   if input.isdigit():
       print(input)
       return True
                       
   elif input is "":
       print(input)
       return True

   else:
       print(input)
       return False

解釋:

回調 function 檢查 Entry 小部件中的輸入是否有效。 如果條目有效,則返回 True,否則返回 False。 在此示例中,檢查通過鍵盤輸入的輸入是否為數字類型。 如果輸入是數字類型,則回調 function 返回 true。 對於刪除操作,回調 function 返回 true,因為輸入是“”。 然而,對於任何非數字輸入,回調 function 返回 false。

  1. 創建父 window
root=Tk()
  1. 創建條目小部件
e=Entry(root)
  1. 在父 window 中指定 Entry 小部件的 position
e.place(x=50, y=50)
  1. 注冊回調 function
reg=root.register(callback)
  1. 調用回調 function 以驗證 Entry 小部件中的輸入
e.config(validate="key", validatecommand=(reg, '%P'))

最后一步:運行應用程序

root.mainloop()

希望它有效。 資料來源: Python Tkinter - 驗證條目小部件 -GeeksforGeeks

2.完整代碼:


import tkinter
from tkinter import *


def callback(input):
    
    if input.isdigit():
        print(input)
        return True
                        
    elif input is "":
        print(input)
        return True

    else:
        print(input)
        return False
                        
root = Tk()

e = Entry(root)
e.place(x = 50, y = 50)
reg = root.register(callback)

e.config(validate ="key",
        validatecommand =(reg, '% P'))

root.mainloop()

暫無
暫無

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

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