我想将 Entry 小部件的输入限制为最多 2 个字符,并且仅接受数字作为输入。
我已经设法将最多 2 个字符限制为有效,但我无法开始工作是将其限制为仅数字
当我将变量更改为 IntVar() 时,不再强制执行字符限制。
#Import TKinter module for GUI
import tkinter as tk
from tkinter import ttk
from tkinter import font
from tkinter import messagebox
from tkinter import *
#Create GUI Screen
#Create Notebook GUI Widget
root = Tk()
note = ttk.Notebook(root)
#------------------------------------------------------------------------------
def limit_size(*args): #Limit Entry Field to 2 Characters
value1 = str(Rev_Maj_Value1.get())
if len(value1) >2:Rev_Maj_Value1.set(value1[:2])
def limit_size1(*args):
value2 = str(Rev_Min_Value2.get())
if len(value2) >2:Rev_Min_Value2.set(value2[:2])
def limit_size2(*args):
value3 = str(Rev_Maj_Value3.get())
if len(value3) >2:Rev_Maj_Value3.set(value3[:2])
def limit_size3(*args):
value4 = str(Rev_Min_Value4.get())
if len(value4) >2:Rev_Min_Value4.set(value4[:2])
#------------------------------------------------------------------------------
Tab5 = ttk.Frame(note)
canvas5 = Canvas(Tab5, width=550, height=350)
canvas5.pack()
#Entry Field
Rev_Maj_Value1 = StringVar()
Rev_Maj_Value1.trace('w', limit_size)
Rev_Min_Value2 = StringVar()
Rev_Min_Value2.trace('w', limit_size1)
Rev_Maj_Value3 = StringVar()
Rev_Maj_Value3.trace('w', limit_size2)
Rev_Min_Value4 = StringVar()
Rev_Min_Value4.trace('w', limit_size3)
Rev_Maj1 = Entry(Tab5, justify="center", width=10, textvariable=Rev_Maj_Value1)
Rev_Maj1.insert(0, "00") #Default Value
Rev_Maj1__Window = canvas5.create_window(425, 175, anchor = 'sw', window = Rev_Maj1)
Rev_Min2 = Entry(Tab5, justify="center", width=10, textvariable=Rev_Min_Value2)
Rev_Min2.insert(0, "00") #Default Value
Rev_Min2__Window = canvas5.create_window(425, 225, anchor = 'sw', window = Rev_Min2)
Rev_Maj3 = Entry(Tab5, justify="center", width=10, textvariable=Rev_Maj_Value3)
Rev_Maj3.insert(0, "00") #Default Value
Rev_Maj3__Window = canvas5.create_window(425, 275, anchor = 'sw', window = Rev_Maj3)
Rev_Min4 = Entry(Tab5, justify="center", width=10, textvariable=Rev_Min_Value4)
Rev_Min4.insert(0, "00") #Default Value
Rev_Min4__Window = canvas5.create_window(425, 325, anchor = 'sw', window = Rev_Min4)
#------------------------------------------------------------------------------
#Create Notepad tabs
note.add(Tab5, text = " 5 ")
note.pack()
#------------------------------------------------------------------------------
root.mainloop()
我想将 Entry 小部件的输入限制为最多 2 个字符 并且只接受数字作为输入。
您可以使用
isdigit()
来实现类似的效果,并与其他方法执行相同的操作。
片段:
def limit_size(*args): #Limit Entry Field to 2 Characters
if not Rev_Maj_Value1.get().isdigit():
messagebox.showwarning('warning', 'Please enter number')
.....