Validation 努力验证tkinter中的用户条目

Validation 努力验证tkinter中的用户条目,validation,tkinter,Validation,Tkinter,下面是我为tkinter中的一个项目创建的一些代码的一部分,该项目使用sqlite3作为python中的数据库。我试图让用户在输入字段中输入值时只接受整数值,并试图在验证函数中实现这一点。我尝试使用try和except方法,但这似乎仍然允许将所有值添加到表中。否则我怎么能尝试让它工作呢 def validation (self): try: int(self.inc.get()) and int(self.out.get()) =

下面是我为tkinter中的一个项目创建的一些代码的一部分,该项目使用sqlite3作为python中的数据库。我试图让用户在输入字段中输入值时只接受整数值,并试图在验证函数中实现这一点。我尝试使用try和except方法,但这似乎仍然允许将所有值添加到表中。否则我怎么能尝试让它工作呢

     def validation (self):
            try:
                int(self.inc.get()) and int(self.out.get()) == True
            except ValueError:
                self.message['text'] = 'Value must be a number!'



    def adding (self):
        if self.validation:
            query = 'INSERT INTO data VALUES (?,?)'
            parameters = (self.inc.get(), self.out.get())
            self.run_query (query, parameters)
            self.message ['text'] = 'Record [] added' .format (self.inc.get ())
            self.inc.delete (0, END)
            self.out.delete (0, END)
        else:
            self.message['text'] = 'Income or outgoing field is empty'
        self.viewing_records()

    def deleting (self):
        self.message ['text'] = ''
        try:
            self.tree.item(self.tree.selection ()) ['values'][0]
        except IndexError as e:
            self.message['text'] = 'Please, select record!'
            return

        self.message['text'] = ''
        Income = self.tree.item (self.tree.selection ()) ['text']
        query = 'DELETE FROM data WHERE totalinc = ?'
        self.run_query (query, (Income, ))
        self.message['text'] = 'Record [] deleted.'.format(Income)
        self.viewing_records()

    def editing (self):
        self.message['text'] = ''
        try:
            self.tree.item (self.tree.selection ())['values'][0]
        except IndexError as e:
            self.message['text'] = 'Please select record'
            return

        name = self.tree.item (self.tree.selection ())['text']
        old_out = self.tree.item (self.tree.selection ())['values'][0]

        self.edit_wind = Toplevel ()
        self.edit_wind.title ("Editing")

        Label (self.edit_wind, text = 'Old income:').grid (row = 0, column = 1)
        Entry (self.edit_wind, textvariable = StringVar(self.edit_wind, value = name), state = 'readonly').grid(row = 0, column = 2)
        Label (self.edit_wind, text = 'New income:').grid(row = 1, column = 1)
        new_inc = Entry (self.edit_wind)
        new_inc.grid (row = 1, column = 2)

        Label (self.edit_wind, text = 'Old outgoing:').grid (row = 2, column = 1)
        Entry (self.edit_wind, textvariable = StringVar(self.edit_wind, value = old_out), state = 'readonly').grid(row = 2, column = 2)
        Label (self.edit_wind, text = 'New outgoing: ').grid(row = 3, column = 1)
        new_out = Entry (self.edit_wind)
        new_out.grid (row = 3, column = 2)

        Button (self.edit_wind, text = 'Save changes', command = lambda: self.edit_records (new_inc.get(), name, new_out.get(), old_out)).grid (row = 4, column = 2, sticky = W)

        self.edit_wind.mainloop()

    def edit_records (self, new_inc, name, new_out, old_out):
        query = "UPDATE data SET totalinc = ?, totalout = ? WHERE totalinc = ? AND totalout = ?"
        parameters = (new_inc, new_out, name, old_out)
        self.run_query (query, parameters)
        self.edit_wind.destroy()
        self.message['text'] = 'Record [] changed.' .format (name)
        self.viewing_records()






if __name__ == '__main__':
    wind = Tk()
    application = Product (wind)
    wind.mainloop()
str='8'
如果str.isdigit():
打印(str)


我建议看一下is isdigit()。

您发布的代码太多了。请创建一个。不过,在你这么做之前,你应该做一些研究。在这个网站上有几个与进入验证相关的问题和答案。