Feb-14-2022, 02:11 AM
I am new to tkinter. I want to add two numbers and pass the result to the second page. in my code, I don't understand why instead of adding the numbers, it attaches them and shows them on the second page. I have introduced them as integers, but it still recognizes them as strings.
import tkinter as tk from tkinter import * Title_Font = ("Helvetica", 16, "bold") Label_Font = ("Helvetica", 10) class SampleApp(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) container = tk.Frame(self) self.title("Summation App") container.pack() self.frames = {} for F in (PageOne, PageTwo): frame = F(container, self) self.frames[F] = frame frame.grid(row=0, column=0, sticky="nsew") self.geometry("400x400") self.show_frame(PageOne) def show_frame(self, c): frame = self.frames[c] frame.tkraise() class PageOne(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller = controller self.frame1 = tk.LabelFrame(self, text="This is page one", font=Title_Font) self.frame1.pack(padx=10, pady=10) label1 = tk.Label(self.frame1, text= "First No.", font = Label_Font) label1.grid(row=0, column=0) label2 = tk.Label(self.frame1, text= "Second No.", font = Label_Font) label2.grid(row=1, column=0) first_no = IntVar() second_no = IntVar() self.entry1 = tk.Entry(self.frame1, textvariable=first_no) self.entry1.grid(row=0, column=1) self.entry2 = tk.Entry(self.frame1, textvariable=second_no) self.entry2.grid(row=1, column=1) button1 = tk.Button(self.frame1, text="Go to Page Two", command=lambda: self.go_to_page_two(), font=Label_Font) button1.grid(row=4, column=0, padx=10, pady=10) def go_to_page_two(self): self.controller.SomeVar = self.entry1.get() + self.entry2.get() print(self.controller.SomeVar) self.controller.frames[PageTwo].correct_label() self.controller.show_frame(PageTwo) class PageTwo(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller = controller self.frame2 = tk.LabelFrame(self, text="This is page two", font=Title_Font) self.frame2.pack() self.label3 = tk.Label(self.frame2) self.label3.pack() def correct_label(self): self.label3.config(text=self.controller.SomeVar) app = SampleApp() app.mainloop()