在Python中创建一个程序,用GUI找到毕达哥拉斯定理 [英] Create a program in Python that finds the pythagorean theorem with a GUI
问题描述
为我最后的Python家庭作业编程介绍了一些代码。目标是构建一个小GUI,在用户输入2边的长度并计算后计算直角三角形的斜边。我写了很多代码,但我在两个方面都在挣扎。 1.Side C框不应该是一个可以输入内容的框,而应该是空白的,直到答案出现,但我不知道该怎么做。 2.我一直收到错误:
> AttributeError:'Pythagorean'对象没有属性'ans'
import tkinter
import math
class Pythagorean:
def __init __(self):
#创建主窗口。
self.main_window = tkinter.Tk()
#创建五个帧。
self.SideA_frame = tkinter.Frame(self.main_window)
self.SideB_frame = tkinter.Frame(self.main_window)
self.SideC_frame = tkinter.Frame(self.main_window)
self.ans_frame = tkinter.Frame(self.main_window)
self.button_frame = tkinter.Frame(self.main_window)
self.SideA_label = tkinter.Label( self.SideA_frame,
text ='Side A:')
self.SideA_entry = tkinter.Entry(self.SideA_frame,
width = 30)
self.SideA_label.pack( side ='left')
self.SideA_entry.pack(side ='left')
self.SideB_label = tkinter.Label(self.SideB_frame,
text ='Side B:')
self.SideB_entry = tkinter.Entry(self.SideB_frame,
width = 30)
self.SideB_label.p ack(side ='left')
self.SideB_entry.pack(side ='left')
self.SideC_label = tkinter.Label(self.SideC_frame,
text ='Side C:')
self.SideC_entry = tkinter.Entry(self.SideC_frame,
width = 30)
self.SideC_label.pack(side = 'left')
self.SideC_entry.pack(side ='left')
self.calc_button = tkinter.Button(self.button_frame,
text ='Calculate',
command = self.calc_ans)
self.quit_button = tkinter.Button(self.button_frame,
text ='Exit',
command = self.main_window.destroy)
self.calc_button.pack(side ='right')
self.quit_button.pack(side ='right')
self.SideA_frame.pack()
self.SideB_frame.pack()
self.SideC_frame.pack()
self.ans_frame.pack()
self.button_frame.pack()
tkinter.mainloop()
def calc_ans(self):
self.SideA = float(self.SideA_entry.get())
self.SideB = float(self.SideB_entry.get())
self.Pyth = math.sqrt(self.SideA ** 2 + self.SideB ** 2)
self.ans.set(self.Pyth)
Pyth_The = Pythagorean()
我尝试过:
我已经尝试修改代码的各个部分,查找Tkinter和类的指南,但无济于事我仍然无法弄清楚这些问题。我觉得这个项目真的输了。
对于你的第一个问题,你可以把这个字段只读:
self.SideC_entry.configure(state ='readonly')
self.ans.set(self.Pyth)
您试图在从未声明过的对象上调用set
方法。 / BLOCKQUOTE>
'm struggling with a bit of code for my final Intro to programming in Python homework. The goal is to build a small GUI that calculates the hypotenuse of a right triangle after the user enters the length of 2 sides and hits calculate. I've written a lot of the code but i'm struggling in 2 ways. 1. The "Side C" box shouldn't be a box you can enter stuff into, instead it should be blank until the answer comes up in it, but i'm not sure how to do that. 2. I keep getting an error:
> AttributeError: 'Pythagorean' object has no attribute 'ans'
import tkinter import math class Pythagorean: def __init__(self): # Create the main window. self.main_window = tkinter.Tk() # Create the five frames. self.SideA_frame = tkinter.Frame(self.main_window) self.SideB_frame = tkinter.Frame(self.main_window) self.SideC_frame = tkinter.Frame(self.main_window) self.ans_frame = tkinter.Frame(self.main_window) self.button_frame = tkinter.Frame(self.main_window) self.SideA_label = tkinter.Label(self.SideA_frame, text=' Side A:') self.SideA_entry = tkinter.Entry(self.SideA_frame, width=30) self.SideA_label.pack(side='left') self.SideA_entry.pack(side='left') self.SideB_label = tkinter.Label(self.SideB_frame, text=' Side B:') self.SideB_entry = tkinter.Entry(self.SideB_frame, width=30) self.SideB_label.pack(side='left') self.SideB_entry.pack(side='left') self.SideC_label = tkinter.Label(self.SideC_frame, text=' Side C:') self.SideC_entry = tkinter.Entry(self.SideC_frame, width=30) self.SideC_label.pack(side='left') self.SideC_entry.pack(side='left') self.calc_button = tkinter.Button(self.button_frame, text='Calculate', command=self.calc_ans) self.quit_button = tkinter.Button(self.button_frame, text='Exit', command=self.main_window.destroy) self.calc_button.pack(side='right') self.quit_button.pack(side='right') self.SideA_frame.pack() self.SideB_frame.pack() self.SideC_frame.pack() self.ans_frame.pack() self.button_frame.pack() tkinter.mainloop() def calc_ans(self): self.SideA = float(self.SideA_entry.get()) self.SideB = float(self.SideB_entry.get()) self.Pyth = math.sqrt(self.SideA**2 + self.SideB**2) self.ans.set(self.Pyth) Pyth_The = Pythagorean()
What I have tried:
I've tried modifying various parts of the code, looking up guides on Tkinter and classes, but to no avail i still cant figure out these issues. I feel really lost on this project.解决方案For your first problem, you could make the field read only:
self.SideC_entry.configure(state='readonly')
self.ans.set(self.Pyth)
You are trying to call theset
method on an object that has never been declared.
这篇关于在Python中创建一个程序,用GUI找到毕达哥拉斯定理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!