May-25-2019, 10:39 AM
I've tried to add "Notebook" widget, but it takes more place than it's master frame (FrameAction). Why is it so and can I fix that?
import tkinter as tk from tkinter import ttk as tktw class Window(tk.Tk): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.geometry("640x480") self.minsize(width=640, height=480) self.fm = FrameMain(self, background="pink") self.fb = FrameBottom(self, background="lightblue") self.fl = FrameLeft(self.fm, background="yellow") self.fr = FrameRight(self.fm, background="green") self.fa = FrameAction(self.fr, background="orange") self.fc = FrameChat(self.fr, background="blue") self.tm = TopMenu(self) self.config(menu=self.tm) self.ab = ActionBar(self.fa) self.ai = ActionInfo(self.ab) self.ab.add(self.ai, text="Info") class FrameMain(tk.Frame): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(fill=tk.BOTH, expand=1) class FrameLeft(tk.Frame): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(fill=tk.BOTH, expand=1, side="left") class FrameRight(tk.Frame): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(fill=tk.BOTH, expand=1, side="right") class FrameChat(tk.Frame): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(fill=tk.BOTH, expand=1, side="bottom") class FrameAction(tk.Frame): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(fill=tk.BOTH, expand=1, side="top") class ActionBar(tktw.Notebook): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(fill=tk.BOTH, expand=1) class ActionInfo(tk.Frame): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(fill=tk.BOTH, expand=1) class FrameBottom(tk.Frame): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(fill=tk.BOTH) self.bs = ButtonSend(self, text="Send") class ButtonSend(tk.Button): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.pack(side="right") class TopMenu(tk.Menu): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.add_cascade(label="Menu") if __name__ == "__main__": w = Window() w.mainloop()