📜  Python Tkinter – SpinBox 范围验证

📅  最后修改于: 2022-05-13 01:55:11.306000             🧑  作者: Mango

Python Tkinter – SpinBox 范围验证

先决条件: Python GUI – tkinter、 Python Tkinter – 验证条目小部件
Tkinter 是一个Python GUI(图形用户界面)模块,它快速且易于实现,广泛用于创建桌面应用程序。它提供了各种基本小部件来构建 GUI 程序。在 Tkinter 中,Spinbox 是常用的小部件,用于从程序员提供的范围内选择固定数量的值,但默认情况下 Spinbox 接受用户提供的所有类型的输入。因此,我们需要验证输入并仅接受范围内的那些值。
下面是实现:

注意:有关 Validatecommand 的更多信息,请参阅Python Tkinter – Validating Entry Widget

Python3
from tkinter import *
 
# Validating function
def validate(user_input):
    # check if the input is numeric
    if  user_input.isdigit():
        # Fetching minimum and maximum value of the spinbox
        minval = int(root.nametowidget(spinbox).config('from')[4])
        maxval = int(root.nametowidget(spinbox).config('to')[4])
 
        # check if the number is within the range
        if int(user_input) not in range(minval, maxval):
            print ("Out of range")
            return False
 
        # Printing the user input to the console
        print(user_input)
        return True
 
    # if input is blank string
    elif user_input is "":
        print(user_input)
        return True
 
    # return false is input is not numeric
    else:
        print("Not numeric")
        return False
 
 
root = Tk()
root.geometry("300x300")
root.title("Spinbox Range Validation")
 
# Creating Spinbox
spinbox = Spinbox(root, from_ = 1, to = 1000)
spinbox.pack()
range_validation = root.register(validate)
 
spinbox.config(validate ="key",
         validatecommand =(range_validation, '% P'))
 
root.mainloop()


输出: