5

我正在制作一个只允许输入数字的条目。如果该字符不是整数,我目前坚持删除刚刚输入的字符。如果有人将“空白”替换为需要进入的内容,那将有很大帮助。

import Tkinter as tk

class Test(tk.Tk):

    def __init__(self):

        tk.Tk.__init__(self)

        self.e = tk.Entry(self)
        self.e.pack()
        self.e.bind("<KeyRelease>", self.on_KeyRelease)

        tk.mainloop()



    def on_KeyRelease(self, event):

        #Check to see if string consists of only integers
        if self.e.get().isdigit() == False:

            self.e.delete("BLANK", 'end')#I need to replace 0 with the last character of the string

        else:
            #print the string of integers
            print self.e.get()




test = Test()
4

2 回答 2

6

您也可以将上面的行更改为:

    if not self.e.get().isdigit():
        #take the string currently in the widget, all the way up to the last character
        txt = self.e.get()[:-1]
        #clear the widget of text
        self.e.delete(0, tk.END)
        #insert the new string, sans the last character
        self.e.insert(0, txt)

或者:

if not self.e.get().isdigit():
     #get the length of the string in the widget, and subtract one, and delete everything up to the end
     self.e.delete(len(self.e.get)-1, tk.END)

为我们提供了一个工作示例供我们使用,这有助于加快这一进程。

于 2012-07-07T02:28:18.210 回答
1

如果您正在执行数据验证,您应该使用条目小部件的内置功能,特别是validatecommandvalidate属性。

有关如何使用这些属性的描述,请参见此答案

于 2012-07-07T13:02:45.720 回答