I want to put another Frame in ttk.Notebook(), I use ttk.Frame() to do that.
Because tk.Frame() can't put multiple frame in ttk.Notebook().
Code:
import tkinter as tk
import tkinter.ttk as ttk
def Notebook(root: tk.Tk) -> tk.Frame:
notebook=ttk.Notebook(root)
f1 = tk.Frame()
f2 = tk.Frame()
notebook.add(f1, text="First")
notebook.add(f2, text="Second")
notebook.pack(padx=10, pady=10, fill='both', expand=True)
return f1
def ttkFrame(frame: tk.Frame) -> ttk.Frame:
f = ttk.Frame(frame, width=200, height=100)
ttk.Style().configure('TFrame', background='#DCB5FF')
f.grid(row=0, column=0)
return f
if __name__ == "__main__":
root = tk.Tk()
root.configure(bg="#7AFEC6")
root.geometry('400x600')
f1 = Notebook(root)
ttk_f1 = ttkFrame(f1)
root.mainloop()
Then put an entry or something element in ttk.Frame by grid(), that will be change ttk.Frame() size.
def use_entry(farme: ttk.Frame) -> None:
entry = tk.Entry(farme, width=20)
entry.insert(0, "Hello World")
entry.grid(row=0, column=0)
if __name__ == "__main__":
root = tk.Tk()
root.configure(bg="#7AFEC6")
root.geometry('400x600')
f1 = Notebook(root)
ttk_f1 = ttkFrame(f1)
use_entry(ttk_f1)
root.mainloop()
I know can use grid_rowconfigure(some args) and grid_columnconfigure(some args) to maintain size.
But I want to know why happend that?