Mar-31-2023, 10:59 PM
(This post was last modified: Apr-01-2023, 02:32 AM by deanhystad.)
You don't have a textbox. You have an Entry. Do you mean the value entered in self.display? You get the value typed in self.display, but you never pass that along to rule().
You could do this:
You could do this:
def rule(self, value): return 72 / value def calculate(self): x = int(self.display.get()) result = "Result: " + str(self.rule(x)) self.res_label.config(text=result)I would write the code differently. I am not a fan of making a root window and passing it along to a class. I prefer making the Profit class a subclass of Tk(). That makes Profit the root window. I would also use tkinter variables to get the "display" value and set the res_label.
import tkinter as tk class Profit(tk.Tk): def __init__(self): super().__init__() self.title("Profit") tk.Label( self, text="Interest rate:" ).grid(row=0, column=0) self.user_input = tk.IntVar(self, "") entry = tk.Entry( self, textvariable=self.user_input, width=10, justify=tk.RIGHT, font=("Arial", 10) ) entry.grid(row=0, column=1) entry.bind("<Return>", self.calculate) # create the result field self.result = tk.StringVar(self, "Result: ") tk.Label( self, textvariable=self.result ).grid(row=1, column=0) def calculate(self, event): self.result.set(f"Result: {72 / self.user_input.get()}") Profit().mainloop() #<-- very important. Notice indentation