Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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()