我有一个tk
窗口有3个框架,左侧的工作方式类似于一个树形结构,标签将被添加和删除.grid()
和grid_remove()
,右边框架将显示有关信息这些物品,和一个底部框架,将举行按钮。如果我在左框架(lframe)上展开过多物品,它会将底框架(bframe)推出视野。当它到达窗口的边缘时,我宁愿让底部框架停下来,并使用lframe的滚动条来查看lframe的项目。停止tkinter框架被推下屏幕
下面是我看到的一个简单例子。当你点击按钮时,更多的标签小部件将被创建,并且会将bframe
推出。
from tkinter import *
main = Tk()
canvas = Canvas(main)
canvas.grid(row=0, column=0)
canvas.configure(scrollregion=canvas.bbox("all"))
lframe = Frame(canvas)
lframe.grid(row=0, column=1)
sbar = Scrollbar(canvas)
sbar.config(command=canvas.yview)
canvas.config(yscrollcommand=sbar.set)
sbar.grid(row=0, column=0, sticky=NSEW)
rframe = Frame(main)
rframe.grid(row=0, column=1, sticky=N)
bframe = Frame(main)
bframe.grid(row=1, column=1)
cnt = 1
def addmore():
global cnt
test = Label(lframe, text='this \nis \nthe \nLEFT \nframe\nthis \nis \nthe \nLEFT \nframe\nthis \nis \nthe \nLEFT \nframe\nthis \nis \nthe \nLEFT \nframe\nthis \nis \nthe \nLEFT \nframe\n')
test.grid(row=cnt, column=0)
cnt += 1
lframe.update()
llbl = Label(lframe, text='this \nis \nthe \nLEFT \nframe')
llbl.grid()
rlbl = Label(rframe, text='this is the RIGHT frame')
rlbl.grid()
btn = Button(rframe, text='click me', command=addmore)
btn.grid(row=1, column=0, sticky=N)
blbl = Label(bframe, text='this is the BOTTOM frame', bg="yellow")
blbl.grid(row=0)
main.mainloop()
问题1: 我怎样才能阻止推离屏幕上的B帧?我希望它在达到main
的底部时停止,并且lframe
中的标签开始推出bframe
后面的视图。然后用户将使用滚动条查看lframe
中的其他项目。
问题2: 我不知道我的滚动条是否配置正确,直到我可以让lframe停止推开屏幕。如果它没有正确设置,我需要改变什么?
解决调整大小问题的方法可能是使用列和行权重。用'rowconfigure()'和'columnconfigure()'。我已经解决了调整大小的问题,但由于某种原因,我无法使滚动条正常工作。我会一直搞乱它,直到我弄明白为什么。 –
@SierraMountainTech根据文件重量只是处理它的增长速度。将它添加到上面的例子并没有改变任何东西。 – sidnical
它的确如此,但是如果您添加一个零权重来表示底部框架的最后一行,然后在主窗口中为顶部框架的顶部行添加1的权重,那么底部框架将永远不会被推出。 –