Как я не могу получить ошибку base 10 из пользовательского ввода в Python GUI? - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь использовать графический интерфейс с Python для создания простой функции с целочисленным вводом.

Я действительно новичок в концепции графического интерфейса, поэтому не знаю, что еще делать.

from tkinter import *

root = Tk()

peopleText = Label(root, text="How many people are in your household? ")
wageText = Label(root, text="How much do you make a month before deductions? ")

peopleInput = Entry(root)
wageInput = Entry(root)

runButton = Button(root, text="Run")

peopleText.grid(row=1, column=0)
wageText.grid(row=2, column=0)
peopleInput.grid(row=1, column=1)
wageInput.grid(row=2, column=1)

def runProcess():
    incomeSNAP = int(peopleInput.get()) - 1
    incomeHousing = int(peopleInput.get()) - 1
    if int(wageInput.get()) <= incomeSNAP:
        print("Yes")
    else:
        print("No")
    if int(wageInput.get()) <= incomeHousing:
        print("Yes")
    else:
        print("No")

runButton = Button(root, text="Run")
runButton.bind('<Button_1>', runProcess())
runButton.pack()

root.mainloop()

Я ожидал всплывающего окна, но получил эту ошибку:

  File "/Users/noahpark/PycharmProjects/pythonProject/gui.py", line 21, in runProcess
    incomeSNAP = int(peopleInput.get()) - 1
ValueError: invalid literal for int() with base 10: ''

1 Ответ

0 голосов
/ 25 марта 2019

проблема найдена, если вы закомментируете '<Button_1>' and .pack() ваш код, а затем добавляете command=runProcess к кнопке, которую он должен запустить.

from tkinter import *

root = Tk()

peopleText = Label(root, text="How many people are in your household? ")
wageText = Label(root, text="How much do you make a month before deductions? ")

peopleInput = Entry(root)
wageInput = Entry(root)

runButton = Button(root, text="Run")

peopleText.grid(row=1, column=0)
wageText.grid(row=2, column=0)
peopleInput.grid(row=1, column=1)
wageInput.grid(row=2, column=1)

def runProcess():
    incomeSNAP = int(peopleInput.get()) - 1
    incomeHousing = int(peopleInput.get()) - 1
    if int(wageInput.get()) <= incomeSNAP:
        print("Yes")
    else:
        print("No")
    if int(wageInput.get()) <= incomeHousing:
        print("Yes")
    else:
        print("No")



runButton = Button(root, text="Run", command=runProcess)
runButton.grid(row=3, column=0)
#runButton.bind('<Button_1>', runProcess())
#runButton.pack()

root.mainloop()

Просто чтобы добавить к этому, вы можете пойматьошибка значения, если пользователь ввел неправильную переменную, скажем «строка»

from tkinter import *


root = Tk()

peopleText = Label(root, text="How many people are in your household? ")
wageText = Label(root, text="How much do you make a month before deductions? ")

peopleInput = Entry(root)
wageInput = Entry(root)

runButton = Button(root, text="Run")

peopleText.grid(row=1, column=0)
wageText.grid(row=2, column=0)
peopleInput.grid(row=1, column=1)
wageInput.grid(row=2, column=1)

def runProcess():
    try:
        peopleValue = int(peopleInput.get())
        wageValue = int(peopleInput.get())
    except ValueError:
        peopleValue = None
        wageValue = None
        print("Pls input integer")
        return

    incomeSNAP = int(peopleInput.get()) - 1
    incomeHousing = int(peopleInput.get()) - 1
    if int(wageInput.get()) <= incomeSNAP:
        print("Yes")
    else:
        print("No")
    if int(wageInput.get()) <= incomeHousing:
        print("Yes")
    else:
        print("No")




runButton = Button(root, text="Run", command=runProcess)
runButton.grid(row=3, column=0)


root.mainloop()

Надеюсь, что это поможет

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