如何在Tkinter中将columnconfigure与可滚动框架一起使用



我正在尝试创建一个可滚动的框架,其中网格用不同的权重管理其中的小部件。然而,columnconfigure似乎不会影响可滚动框架内的小部件。在这个代码片段中,我使用了Pmw.ScrollableFrame,但我也尝试了tkscrolledframe和这里的代码大纲:https://blog.teclado.com/tkinter-scrollable-frames/,但他们似乎都有同样的问题。

from Pmw import ScrolledFrame
root = Tk()
root.state("zoomed")
Grid.columnconfigure(root, 0, weight = 4)
Grid.columnconfigure(root, 1, weight = 5)
Grid.rowconfigure(root, 0, weight = 1)
Grid.rowconfigure(root, 1, weight = 15)
Grid.rowconfigure(root, 2, weight = 3)
sf = ScrolledFrame(root)
Grid.columnconfigure(sf.interior(), index = 0, weight = 1)
Grid.columnconfigure(sf.interior(), index = 1, weight = 100)
for i in range(100):
Button(sf.interior(), text = "button 1").grid(row = i, column = 0, sticky = 'nsew')
Button(sf.interior(), text = "button 2").grid(row = i, column = 1, sticky = 'nsew')

sf.grid(row = 1, column = 0, sticky = 'nsew')
Button(root, text = "button 2").grid(row = 1, column = 1, sticky = 'nsew')
Button(root, text = "button 3").grid(row = 2, column = 0, sticky = 'nsew', columnspan = 2)
Button(root, text = "button 4").grid(row = 0, column = 1, sticky = 'nsew')
root.mainloop()

如果我不能对这些类型的框架进行用户列配置,那么在不硬编码大小的情况下,我还能用什么来控制可滚动框架内小部件的大小呢?如有任何帮助,我们将不胜感激!

编辑添加:我打算用输入框、复选框和选项菜单的组合来填充可滚动框。

问题不在于columnconfigure。问题是内部框架没有展开以填充窗口。

Pmw.ScrolledFrame类有一个文档属性horizflex,可以将其设置为expand以填充窗口。

horizflex指定可滚动内部框架的宽度应如何相对于剪切框架调整大小。如果">fixed",则内部框架将按照框架的子窗口小部件的要求设置为自然宽度。如果">展开"并且内部框架的请求宽度小于剪裁框架的宽度,则内部框架将展开以填充剪裁框架。如果">收缩"并且内部框架的请求宽度大于剪裁框架的宽度,则内部框架收缩到剪裁框架的宽。如果">弹性",则内部框架的宽度始终设置为剪裁框架的宽度。默认值为">已修复"。

听起来应该将其设置为expand

sf = ScrolledFrame(root, horizflex="expand")

只需更改值,就可以将scrolltext的内置函数与TextboxFrame一起使用。如果要放置其他内容,可能需要使用insertdeleteStringVariable()

import tkinter
root = Tk()
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
textbox = Text(root)
textbox.pack()
for i in range(100):
textbox.insert(END, f"Scrolling Text Label {i}n")
textbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=textbox.yview)
root.mainloop()

编辑:如果你想在滚动条上进行检测,因为你使用的是PMW,你可以在这种情况下使用代表scrolledbinding系统。

最新更新