繁体   English   中英

为什么我的Tkinter Panedwindow没有一直伸展到窗口底部?

[英]Why is my tkinter panedwindow not stretching all the way to the bottom of the window?

经过几天的观察,我不明白为什么pandedwindow小部件没有一直到底部框架的顶部。 如果我遮挡框架部分,则PanedWindow会一直一直到窗口底部。

请随时批评或评论我如何在使用课堂方面改进程序。

import tkinter as t

def main():
    root = t.Tk()
    root.geometry("350x470")
    root.config(background="LightBlue4")
    root.title("basic window")
    app = Application (root)
    root.mainloop()

class Application():

    def __init__(self, parent):
        self.window = parent

        self.panes=t.PanedWindow(self.window, sashwidth=3)
        self.panes.pack(fill=t.BOTH, expand="yes")


        self.frame1=t.Frame(self.window, bg="yellow", bd=2,     relief=t.RIDGE)   
        self.frame1.pack(anchor=t.S, fill=t.X, expand=1)

        self.createWidgets()


    def createWidgets(self):

        self.entry=t.Entry(self.frame1, width=25)
        self.entry.pack(side=t.LEFT, expand=1)
        self.label2=t.Label(self.frame1, text="Update ", fg = "light  green", bg = "dark green", font = "Helvetica 16 bold italic" , bd=2,  relief=t.RAISED)
        self.label2.pack(side=t.LEFT, fill=t.X, padx=5)
        self.label3=t.Label(self.frame1, text="Quit", fg = "blue", bg = "yellow", font = "Verdana 12 bold" , bd=2, relief=t.RAISED)
        self.label3.pack(side=t.LEFT, fill=t.X, padx=5)

        self.left = t.Label(self.window, text="Left Pane", bd=4, bg="tan",  relief=t.FLAT)
        self.left.pack()

        self.right = t.Label(self.window, text="Right Pane", bd=4, bg="light cyan", relief=t.FLAT)
        self.right.pack()

        self.panes.add(self.left, stretch="always")
        self.panes.add(self.right )
        self.panes.sash_place(0,120,0)




if __name__ == '__main__':
    main()

平移的窗口不会扩展整个垂直高度,因为它与self.frame1共享空间。 两者都包装有扩展到可用空间的选项,因此它们最终只占一半。

如果您在self.frame1上关闭扩展,则self.frame1的窗口将占用所有可用空间:

self.frame1.pack(anchor=t.S, fill=t.X, expand=False)

我不明白为什么pandedwindow小部件没有一直到底部框架的顶部。

为什么?

这是因为打包self.frame1self.panes的方式将这两个小部件相互self.panes 这是您在注释以下行时可以看到的: #self.createWidgets()

在此处输入图片说明

如何解决这个问题?

如果希望PaneWindow小部件向下拉伸,则需要使用side选项并排打包self.frame1self.panes

self.panes.pack(fill=t.BOTH, expand="yes", side = t.LEFT)
self.frame1.pack(anchor=t.S, fill=t.X, expand=1, side = t.LEFT)

结果:

在此处输入图片说明

更好的选择:

  1. 由于您要管理许多小部件,因此最好使用grid()布局管理器而不是pack()
  2. 对于self.label2self.label3改用Button()小部件。

暂无
暂无

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

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