Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 12, 2015 18:47:28

Arkella
Зарегистрирован: 2015-10-12
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Достать int из entry и сравнить.

Здравствуйте, в общем, недавно начал учиться программировать на python, хочу сделать программу c помощью tkinter, где я ввожу 2 числа в разные строки(entry) и хочу их сравнить по нажатию кнопки, какая из них больше или меньше. Дело в том, что когда я пытаюсь их сравнить:

if int(a) > int(b):
                  print("1")
elif int(a) == int(b):
                 print("2")
elif int(a) < int(b):
                  print("3")
Выходит ошибка: ValueError: invalid literal for int() with base 10: ''. Получал значение из строк так:
a = entry.get()
 b = entry1.get()
Если после нажатия кнопки прописать print(a) или print(b), то введенное число отображается, а как дело доходит до сравнивания, то выходит та ошибка. Исправьте непутевого.

Отредактировано Arkella (Окт. 12, 2015 18:48:03)

Офлайн

#2 Окт. 12, 2015 20:12:02

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Достать int из entry и сравнить.

А вот так ?

import tkinter
class App(tkinter.Tk):
    def __init__(self):
        tkinter.Tk.__init__(self)
        self.entry_1 = tkinter.Entry(self)
        self.entry_2 = tkinter.Entry(self)
        self.button = tkinter.Button(self, text="Compare !",
                                     command=self.compare)
        self.entry_1.pack()
        self.entry_2.pack()
        self.button.pack()
    def compare(self):
        a = self.entry_1.get()
        b = self.entry_2.get()
        print(int(a) > int(b))
app = App()
app.mainloop()

Все дело в том, что скорее всего Вы получаете данные из полей ввода до того, как программа запустилась, поэтому там пустые строки, которые питон не может привести к типу int и выдает ошибку.

Вот тут расписано всё.

Отредактировано ayb (Окт. 12, 2015 20:15:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version