Tkinter上的Python可折叠侧边栏

时间:2019-05-01 15:10:58

标签: python tkinter

我正在用python创建一个多功能工具,该工具具有可折叠的侧边栏用于导航,但是我对tkinter和python本身还是很陌生,这本身就是我问这个问题的原因。我没有代码,因为这是我想到的第一件事,并且所有教程都涉及Javascript或某种编程语言。

1 个答案:

答案 0 :(得分:1)

这是一个如何创建可折叠框架的简单示例。通过将所有侧边栏内容放入框架中,可以使用相同的方法来创建可折叠侧边栏。

import tkinter as tk


class Example(tk.Tk):
    def __init__(self):
        super().__init__()
        self.geometry('300x100')
        self.left_frame = tk.Frame(self)
        self.left_frame.grid(row=0, column=0, sticky='nsew')
        self.right_frame = tk.Frame(self)
        self.rowconfigure(0, weight=1)
        for i in range(3):
            self.columnconfigure(i, weight=1)

        tk.Label(self.left_frame, text='Left Frame').grid(row=0, column=0, sticky='nsew')
        tk.Label(self.right_frame, text='Right Frame').grid(row=0, column=0, sticky='nsew')

        self.frame_status = False
        self.ar_btn = tk.Button(self, text="▶", width=1, command=self.toggle_right_frame)
        self.ar_btn.grid(row=0, column=2, sticky='nse')

    def toggle_right_frame(self):
        if self.frame_status:
            self.right_frame.grid_forget()
            self.frame_status = False
            self.ar_btn.config(text="▶")
        else:
            self.frame_status = True
            self.right_frame.grid(row=0, column=1, sticky='nsew')
            self.ar_btn.config(text="◀")

Example().mainloop()

结果:

enter image description here

enter image description here