My Tkinter application have added Notebook and inside the notebook I want to switch the frame using a button. Implemented notebook switch and frame switch. i want to take entry input from one frame of notebook to another frame when I click 'okay' buttonenter code here
I tried to pass the value as argument for frame class initialization
assign the entry filed value to a global variable
In Frame : class Tab1_Frame1 want to pass value from self.uidentry = Entry(self, bd=5) to class Tab1_Frame2
import tkinter as tk
from tkinter import *
from tkinter import ttk
# Root class to create the interface and define the controller function to switch frames
class RootApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.switch_frame(NoteBook)
# controller function
def switch_frame(self, frame_class):
new_frame = frame_class(self)
if self._frame is not None:
self._frame.destroy()
self._frame = new_frame
self._frame.pack()
# sub-root to contain the Notebook frame and a controller function to switch the tabs within the notebook
class NoteBook(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.notebook = ttk.Notebook()
self.tab1 = Tab1(self.notebook)
self.notebook.add(self.tab1, text="User Bash History")
self.notebook.pack()
# controller function
def switch_tab1(self, frame_class):
new_frame = frame_class(self.notebook)
self.tab1.destroy()
self.tab1 = new_frame
# Notebook - Tab 1
class Tab1(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self._frame = None
self.switch_frame(Tab1_Frame1)
def switch_frame(self, frame_class):
new_frame = frame_class(self)
if self._frame is not None:
self._frame.destroy()
self._frame = new_frame
self._frame.pack()
# first frame for Tab1
class Tab1_Frame1(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.label = Label(self, text="Userbash history")
self.userid = Label(self, text ="User ID", bg="blue", fg="white")
self.userid.pack()
self.newWindow = None
self.uidentry = Entry(self, bd=5)
self.uidentry.pack()
global uid
uid = self.uidentry.get()
# button object with command to replace the frame
self.button = Button(self, text="OK", command=lambda: master.switch_frame(Tab1_Frame2))
self.label.pack()
self.button.pack()
def new_window(self):
if self.newWindow is not None:
self.newWindow.destroy()
self.newWindow = Frame(self)
self.uid=self.uidentry.get()
self.app = logwindow(self.newWindow, self.uid)
# second frame for Tab1
class Tab1_Frame2(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.label = Label(self, text="it has been changed!")
# and another button to change it back to the previous frame
self.button = Button(self, text="self" , command=lambda: master.switch_frame(Tab1_Frame1))
self.label.pack()
self.button.pack()
def new_window(self):
self.newWindow = tk.Toplevel(self.master)
self.uid=self.uidentry.get()
if __name__ == "__main__":
Root = RootApp()
Root.geometry("640x480")
Root.title("My Host APP")
Root.mainloop()```