从tkinter输入框生成包含2个整数变量的if语句

2024-03-29 09:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我对python和一般编程非常陌生。我做了这个程序谁决定谁更重。别担心为什么这只是一些朋友之间的一个插科打诨。不管怎样,我一直试图把它放到一个带有Tkinter的GUI中,但是在输入框和将它们转换成整数方面遇到了问题。我试过使用IntVar、entry\u box=int(entry\u box)和entry\u box=float(entry\u box)。似乎什么都不管用,我每次都会出错

from tkinter import *
root = Tk()
root.title("Who Is More Fat?")
root.geometry("640x640+0+0")

# LABELS
heading = Label(root, text="Welcome to the Who's More Fat Program", font=("arial", 40, "bold"), 
fg="steelblue").pack()
person_1 = Label(root, text="Enter first persons name: ", font=("arial",20, "bold"), 
fg="black").place(x=10, y=200)
weight_1 = Label(root, text="Enter first persons weight: ", font=("arial",20, "bold"), 
fg="black").place(x=10, y=230)
person_2 = Label(root, text="Enter second persons name: ", font=("arial",20, "bold"), 
fg="black").place(x=10, y=290)
weight_2 = Label(root, text="Enter second persons weight: ", font=("arial",20, "bold"), 
fg="black").place(x=10, y=320)


# TEXT BOXES

entry_box1 = StringVar
entry_box2 = IntVar
entry_box3 = StringVar
entry_box4 = IntVar


entry_box1 = Entry(root, width=25, bg="white").place(x=350, y=210)
entry_box2 = Entry(root, width=25, bg="white").place(x=370, y=240)
entry_box3 = Entry(root, width=25, bg="white").place(x=395, y=300)
entry_box4 = Entry(root, width=25, bg="white").place(x=410, y=330)

entry_box1 = StringVar
entry_box2 = IntVar
entry_box3 = StringVar
entry_box4 = IntVar



def calc():
    if entry_box2.get > entry_box4.get:
        answer.insert(entry_box1.get)
        answer.insert(" Is the Fattest")
    else:
        answer.insert(entry_box3.get)
        answer.insert(" Is the Fattest")





# CALCULATE BUTTON

calculate = Button(root, text="Calculate the Fattest!", font=("arial",10, "bold"), bg="white", 
command=calc).place(x=525, y=205)
answer = Label(root, text="Answer: ", font=("arial",10, "bold"), bg="white",).place(x=400, y=400)

回溯

Tkinter callback Traceback (most recent call last): 
FileC:\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 30, 
in calc if entry_box2.get > entry_box4.get: 
AttributeError: 'NoneType' object has no attribute 'get' ```

Tags: textgetplacerootlabelbgentrywhite
1条回答
网友
1楼 · 发布于 2024-03-29 09:31:38

正如ForceBru所说的,在建议的代码中有许多不同的错误。因此,最简单的答案可能是提供一个等效的工作代码,并让您将答案与自己的代码进行分析和比较:

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)

相关问题 更多 >