[英]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.frame1
和self.panes
的方式将这两个小部件相互self.panes
。 这是您在注释以下行时可以看到的: #self.createWidgets()
:
如果希望PaneWindow小部件向下拉伸,则需要使用side
选项并排打包self.frame1
和self.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)
结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.