Próbuję utworzyć instrukcję if z 2 liczbami z pola wprowadzania od Tkinter. Kiedy porównuję 2 liczby, pojawia się błąd z informacją, że dwie zmienne, które porównuję, to funkcje. Czy można przekształcić te funkcje w zmienne? Próbowałem var = int (var), IntVar i var = float (var) i wszystkie nie działają.

Kod

from tkinter import *
root = Tk()
root.title("Who Is More Fat?")
root.geometry("800x600")

# LABELS
font1, font2, font3 = "arial 30 bold", "arial 18 bold", "arial 18"
Label(root, text="Welcome to the Who's More Fat Program", font=font1,
      fg="steelblue").place(x=0, y=0)

Label(root, text="Enter first persons name: ", font=font2,
      fg="black").place(x=10, y=200)

Label(root, text="Enter first persons weight: ", font=font2,
      fg="black").place(x=10, y=240)

Label(root, text="Enter second persons name: ", font=font2,
      fg="black").place(x=10, y=300)

Label(root, text="Enter second persons weight: ", font=font2,
      fg="black").place(x=10, y=340)

# TEXT BOXES
entry_box1 = Entry(root, width=25, font=font3, bg="white")
entry_box1.place(x=400, y=200)

entry_box2 = Entry(root, width=25, font=font3, bg="white")
entry_box2.place(x=400, y=240)

entry_box3 = Entry(root, width=25, font=font3, bg="white")
entry_box3.place(x=400, y=300)

entry_box4 = Entry(root, width=25, font=font3, bg="white")
entry_box4.place(x=400, y=340)

entry_box2 = float(entry_box2)
entry_box4 = float(entry_box4)

def calc():
     if float(entry_box2.get()) > float(entry_box4.get()):
        answer.delete(0, END)
        answer.insert(0, entry_box1.get() + " is the Fattest")
    else:
        answer.delete(0, END)
        answer.insert(0, entry_box3.get() + " is the Fattest")

# CALCULATE BUTTON

Button(root, text="Calculate the Fattest!", font=font2, bg="white", command=calc).place(x=5, y=390)

Label(root, text="Answer:", font=font2).place(x=290, y=400)
answer = Entry(root, font=font3, width=25, bg="white")
answer.place(x=400, y=400) 

Traceback

Traceback (most recent call last):
File "C:\Users\Liam\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in 
__call__
return self.func(*args)
File "C:/Users/Liam/PycharmProjects/untitled/window.py", line 39, in calc
if entry_box2.get > entry_box4.get:
TypeError: '>' not supported between instances of 'function' and 'function'
-1
Liam Welsh 23 grudzień 2019, 23:44

1 odpowiedź

Najlepsza odpowiedź

Dodałem pętlę główną i usunąłem

entry_box2 = float(entry_box2)
entry_box4 = float(entry_box4)

I działa:

from tkinter import *
root = Tk()

root.title("Who Is More Fat?")
root.geometry("800x600")

# LABELS
font1, font2, font3 = "arial 30 bold", "arial 18 bold", "arial 18"
Label(root, text="Welcome to the Who's More Fat Program", font=font1,
  fg="steelblue").place(x=0, y=0)

Label(root, text="Enter first persons name: ", font=font2,
  fg="black").place(x=10, y=200)

Label(root, text="Enter first persons weight: ", font=font2,
  fg="black").place(x=10, y=240)

Label(root, text="Enter second persons name: ", font=font2,
  fg="black").place(x=10, y=300)

Label(root, text="Enter second persons weight: ", font=font2,
  fg="black").place(x=10, y=340)

# TEXT BOXES
entry_box1 = Entry(root, width=25, font=font3, bg="white")
entry_box1.place(x=400, y=200)

entry_box2 = Entry(root, width=25, font=font3, bg="white")
entry_box2.place(x=400, y=240)

entry_box3 = Entry(root, width=25, font=font3, bg="white")
entry_box3.place(x=400, y=300)

entry_box4 = Entry(root, width=25, font=font3, bg="white")
entry_box4.place(x=400, y=340)


def calc():
    if float(entry_box2.get()) > float(entry_box4.get()):
        answer.delete(0, END)
        answer.insert(0, entry_box1.get() + " is the Fattest")
    else:
        answer.delete(0, END)
        answer.insert(0, entry_box3.get() + " is the Fattest")

# CALCULATE BUTTON

Button(root, text="Calculate the Fattest!", font=font2, bg="white", 
command=calc).place(x=5, y=390)

Label(root, text="Answer:", font=font2).place(x=290, y=400)
answer = Entry(root, font=font3, width=25, bg="white")
answer.place(x=400, y=400) 

root.mainloop()
1
ForceBru 23 grudzień 2019, 21:13