[Tkinter] Auto re-fit frames sizes in main window - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [Tkinter] Auto re-fit frames sizes in main window (/thread-27409.html) |
Auto re-fit frames sizes in main window - Gilush - Jun-05-2020 I have the menu frame on the left side and the main container on the right side but when I fire it up I only see them in a small box inside the main window. How can I make the frames fit the window no matter what size it is? class GUI(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) self.title("GUI Project") # self.resizable(0, 0) menu = tk.Frame(self, relief="solid") container = tk.Frame(self, relief="ridge") menu.grid(row=0, column=0, rowspan=4, sticky="nsew") container.grid(row=0, column=1, sticky="nsew") menu.grid_rowconfigure(0, weight=1) container.rowconfigure(0, weight=0) container.columnconfigure(1, weight=0) self.frames = ["Menu", "FutureFeature2", "TestPing", "FutureFeature3", "FutureFeature"] self.frames[0] = Menu(parent=menu, controller=self) self.frames[1] = FutureFeature2(parent=container, controller=self) self.frames[2] = TestPing(parent=container, controller=self) self.frames[3] = FutureFeature3(parent=container, controller=self) self.frames[4] = FutureFeature(parent=container, controller=self) self.frames[0].grid(row=0, column=0, sticky="nsew") self.frames[1].grid(row=0, column=0, sticky="nsew") self.frames[2].grid(row=0, column=0, sticky="nsew") self.frames[3].grid(row=0, column=0, sticky="nsew") self.frames[4].grid(row=0, column=0, sticky="nsew") self.show_frame(1) def show_frame(self, page_name): frame = self.frames[page_name] print(frame) frame.tkraise() frame.grid(row=0, column=0, columnspan=5, rowspan=5, sticky="nsew") class Menu(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller = controller button1 = tk.Button(self, text="Ping Test", bg="royalblue2", command=lambda: controller.show_frame(2)) button2 = tk.Button(self, text="FutureFeature", bg="dark violet", command=lambda: controller.show_frame(4)) buttun3 = tk.Button(self, text="FutureFeature", bg="pale goldenrod", command=lambda: controller.show_frame(1)) button4 = tk.Button(self, text="Quit", bg="gray40", command=lambda: self.terminate()) button1.pack(fill="both", expand=True) button2.pack(fill="both", expand=True) buttun3.pack(fill="both", expand=True) button4.pack(fill="both", expand=True) def terminate(self): path = fr'c:/users/{os.getlogin()}/desktop/Gui-Skeleton' try: os.rmdir(path) except OSError as err: print(f"Error Deleting tmp folder! {err}") exit() if __name__ == "__main__": path = fr'c:/users/{os.getlogin()}/desktop/Gui-Skeleton' try: if os.path.isdir(path): pass else: os.mkdir(path) except OSError as err: print(f"[!] Operation failed! {err}") app = GUI() app.geometry("800x600") app.mainloop() RE: Auto re-fit frames sizes in main window - menator01 - Jun-05-2020 Have a look at this tutorial. https://python-forum.io/Thread-Tkinter-Getting-Tkinter-Grid-Sizing-Right-the-first-time RE: Auto re-fit frames sizes in main window - Gilush - Jun-06-2020 Thank you! |