限制 Entry Widget 内容仅接受整数和最大字符长度

问题描述 投票:0回答:1

我想将 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()
python tkinter tkinter-entry
1个回答
0
投票

我想将 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')       
    ..... 
© www.soinside.com 2019 - 2024. All rights reserved.