为什么我的tkinter窗口窗口没有一直延伸到窗口底部?

时间:2016-03-29 06:04:55

标签: python tkinter

从这几天开始,我不明白为什么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()

2 个答案:

答案 0 :(得分:0)

paned窗口不会延伸完整的垂直高度,因为它与self.frame1共享空间。两者都有可扩展到可用空间的选项,所以他们最终都占了一半。

你在self.frame1关闭扩展,paned窗口将占用所有可用空间:

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

答案 1 :(得分:0)

  

我不明白为什么pandedwindow小部件不是全部   到底部框架的顶部。

为什么?

这是因为您打包self.frame1self.panes的方式将这两个小部件放在一起。这是您在评论此行时可以看到的内容:#self.createWidgets()

enter image description here

如何解决此问题?

如果您想要缩小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)

<强>结果:

enter image description here

更好的选择:

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