Борьба за проверку пользовательской записи в tkinter - PullRequest
0 голосов
/ 05 мая 2018

Вот часть кода, который я создаю для проекта в tkinter, используя sqlite3 в качестве базы данных в python. Я пытаюсь сделать так, чтобы, когда пользователь вводил свои значения в поля ввода, он принимал только целочисленные значения и пытался внедрить это в функцию проверки. Я пытался использовать метод try и исключением, но, похоже, это все еще позволяет добавлять все значения в таблицу. Как еще я могу попытаться сделать эту работу?

     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()

1 Ответ

0 голосов
/ 05 мая 2018

str = '8' if str.isdigit(): print(str)

Предлагаю взглянуть на isdigit ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...