【发布时间】:2021-08-12 23:08:29
【问题描述】:
我正在制作一个tkinter 程序,我想将用户输入限制为仅浮动。我已经使用register 完成了这项工作并验证了功能。所有这些都工作正常,但是当我输入一组数字时,程序不允许我删除第一个数字。我认为这与我在课堂上的最终函数有关,但我不知道如何在不破坏程序其余部分的情况下对其进行编辑。
这是我的简化问题。
from tkinter import *
class investables(Frame):
def __init__(self, master):
Frame.__init__(self, master=None)
self.pack()
self.master = master
vcmd = (master.register(self.validate),'%d', '%i', '%P', '%s',
'%S', '%v', '%V', '%W')
self.entry1 = Entry(self, validate="key", validatecommand=(vcmd))
self.entry1.grid(row=1, column=3)
# Define validate function, this also passes the many components
# of the register tool
def validate(self, d, i, P, s, S, v, V, W):
# Begin if else statement that prevents certain user input
if P:
try:
# Checks if %P is a float
float(P)
# If this is the case then the input is excepted
return True
# If this is not the case, then the code will not accept user
# input
except ValueError:
return False
# If any other input is inserted, the program will not accept it
# either
else:
return False
root = Tk()
my_gui = investables(master=root)
my_gui.mainloop()
【问题讨论】:
-
你的缩进错误。
-
@Derek:缩进在句法上是有效的——但是它是非常规并且不是很可读。
-
只是想知道,您的问题是否已得到解决和回答?
标签: python validation tkinter tkinter-entry