Python 如何在tkinter gui的文本框输入中添加限制?
我试图在一个输入小部件上增加限制,比如只允许输入11位数字。我试过这个:Python 如何在tkinter gui的文本框输入中添加限制?,python,user-interface,tkinter,textbox,Python,User Interface,Tkinter,Textbox,我试图在一个输入小部件上增加限制,比如只允许输入11位数字。我试过这个: import tkinter as tk from tkinter import ttk from tkinter import messagebox root=tk.Tk() string=tk.StringVar() def limit(string): if len(string.get())>11: messagebox.showinfo('invalid input (sh
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
root=tk.Tk()
string=tk.StringVar()
def limit(string):
if len(string.get())>11:
messagebox.showinfo('invalid input (should be 11 digits')
label=tk.Label(root,text="Phone Number:",font=20,bg="#33BEFF")
label.pack()
phno=ttk.Entry(root,textvariable=string,text="",command=limit)
phno.pack()
root.mainloop()
我希望一个条目中只能输入11位数字
import tkinter as tk
from tkinter import *
root=tk.Tk()
string = tk.StringVar()
max_len = 11
def on_write(*args):
s = string.get()
if len(s) > max_len:
string.set(s[:max_len])
string.trace_variable("w", on_write)
label=tk.Label(root,text="Phone Number:",font=20,bg="#33BEFF")
label.pack()
phno = tk.Entry(root, textvariable=string)
phno.pack()
root.mainloop()
告诉StringVar每次调用函数的值为
改变。因此,每次用户编辑条目中的数据时
条目更改StringVar的数据,它调用on_write()
函数,它可能会更改StringVar,也可能不会更改StringVar,而这种更改是
反映在条目显示的内容中您可以向
条目
小部件添加验证。这里有一点,这是如何在这种情况下应用的
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
def limit(text):
""" Determine if inp string is a valid integer (or empty) and is no more
than MAX_DIGITS long.
"""
MAX_DIGITS = 11
try:
int(text) # Valid integer?
except ValueError:
valid = (text == '') # Invalid unless it's just empty.
else:
valid = (len(text) <= MAX_DIGITS) # OK unless it's too long.
if not valid:
messagebox.showinfo('Entry error',
'Invalid input (should be {} digits)'.format(MAX_DIGITS),
icon=messagebox.WARNING)
return valid
root = tk.Tk()
root.geometry('200x100') # Initial size of root window.
label = tk.Label(root, text="Phone Number:", font=20, bg="#33BEFF")
label.pack()
reg = root.register(limit) # Register Entry validation function.
string = tk.StringVar()
phno = ttk.Entry(root, textvariable=string, text="",
validate='key', validatecommand=(reg, '%P'))
phno.pack()
phno.focus_set() # Set initial input focus to this widget.
root.mainloop()
将tkinter作为tk导入
从tkinter导入ttk
从tkinter导入消息框
def限制(文本):
“”“确定inp字符串是否为有效整数(或空)且不再是
比最大数字长。
"""
最大位数=11
尝试:
int(text)#有效整数?
除值错误外:
valid=(text='')#无效,除非它只是空的。
其他:
valid=(len(text)这允许输入非digts-因此它最多是不完整的。此外,OP的问题已作为副本关闭,因此他们无法接受答案。