限制Tk输入的大小,仅接受数字

时间:2019-09-17 11:43:48

标签: python tkinter

编辑1:我希望输入5个字符,并且它们必须是数字,怎么做?

你好吗?

我在tkinter GUI中有一些问题。我想要一个仅接受5位数字的Entry小部件,它只能是数字和5个字符,我尝试使用以下代码来实现,数字是可行的,但是大小却不能。请帮助

import tkinter as tk

class window2:
    def __init__(self, master=None):
        self.panel2 = tk.Frame(master)
        self.panel2.grid()

        self.max_len = 5
        self.var = tk.StringVar()
        self.var.trace_variable("w", self.validate)

        vcmd = (master.register(self.validate), '%P')
        self.text1 = tk.Entry(self.panel2, validate = 'key', validatecommand = vcmd)
        self.text1.grid()
        self.text1.focus()

    def validate(self, P):
        string = self.var.get()
        if len(string) > self.max_len:
            self.var.set(string[:self.max_len])
        if str.isdigit(P) or P == "":
            return True
        else:
            return False

root1 = tk.Tk()
window2(root1)
root1.mainloop()

0 个答案:

没有答案