在Python中创建一个程序,用GUI找到毕达哥拉斯定理 [英] Create a program in Python that finds the pythagorean theorem with a GUI

查看:220
本文介绍了在Python中创建一个程序,用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 the set method on an object that has never been declared.


这篇关于在Python中创建一个程序,用GUI找到毕达哥拉斯定理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆