I\'m struggling with a bit of code for my final Intro to programming in Python h
ID: 3716061 • Letter: I
Question
I'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. My major problem is that it's not returning the value for Side C. The goal of the program is that you enter Side A and then Side B and then Side C should update it's text label (which shouldn't be editable) to display the answer. Any help would be much appreciated, because i'm completely lost. I still barely understand Object Oriented programming, and adding Tkinter in is really not helping.
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_entry.configure(state='readonly')
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)
return self
Pyth_The = Pythagorean()
Explanation / Answer
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_value = tkinter.StringVar()
self.SideC_entry = tkinter.Entry(self.SideC_frame,
width=30, textvariable=self.SideC_value)
self.SideC_entry.configure(state='readonly')
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.SideC_value.set(math.sqrt(self.SideA**2 + self.SideB**2))
return self
Pyth_The = Pythagorean()