繁体   English   中英

Tkinter 框架在 PanedWindow 内的容器

[英]Tkinter frames container inside a PanedWindow

我有一个 Tkinter 应用程序,其中PanedWindow的左侧使用此处描述的框架容器,右侧有一个用于记录的ScrolledText ,如此所述。 我还使用来调整框架容器中框架的大小,因为它们具有不同的大小。

我的问题是,每当使用此处show_frame(..)方法显示不同的帧时,右侧( ScrolledText )不会调整大小以匹配新的帧大小并覆盖帧内容。

这是构造PanedWindow和框架容器的代码部分。

class Main(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.protocol("WM_DELETE_WINDOW", self.on_closing)
        self.geometry('1366x768')
        self.resizable(True, True)
        self.columnconfigure(0, weight=1)
        self.rowconfigure(0, weight=1)
        # Horizontal pane
        self.horizontal_pane = tk.PanedWindow(self, orient=HORIZONTAL)
        self.horizontal_pane.grid(row=0, column=0, sticky="nsew")
        # Frames container
        self.container = tk.Frame(self.horizontal_pane)
        self.horizontal_pane.add(self.container)
        # Log frame
        self.console_frame = tk.Frame(self.horizontal_pane)
        self.console_frame.columnconfigure(0, weight=1)
        self.console_frame.rowconfigure(0, weight=1)
        self.horizontal_pane.add(self.console_frame, stretch='always')

我该如何解决?

设法通过编辑show_frame()方法来解决它:

def show_frame(self, page_name):
    for frame in self.frames.values():
        frame.grid_remove()
    self.horizontal_pane.grid_remove() # Add this
    frame = self.frames[page_name]
    frame.grid()
    self.horizontal_pane.grid() # And that

不确定这是否是正确的方式,但现在每当显示新框架时,右侧大小的ScrolledText都会调整大小以匹配左侧框架大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM