5

数字のみ入力できるエントリーをしています。現在、入力した文字が整数でない場合、その文字を削除することに固執しています。誰かが「BLANK」をそこに入れる必要があるものに置き換えるなら、それは多くの助けになるでしょう。

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 に答える