我知道这不是第一次有人问这样的问题,但即使在浏览了2个小时的互联网后,我还是无法让它工作:
因此,我尝试创建一个Tkinter框架,其中包含几个按钮(例如我拿了30个)。但是因为我的程序没有足够的空间,我需要在旁边添加一个滚动条,这样就可以滚动按钮了。你知道吗
我遇到的问题是,滚动条的内部“移动部分”和整个滚动条一样大,无法移动,我用scollregion=(0,0,1000,1000)
解决了这个问题,但即使这样,滚动条的移动对画布也没有任何影响。你知道吗
下面是我从程序中提取的相应代码:
import Tkinter as tk
root = tk.Tk()
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=50)
root.columnconfigure(1, weight=1)
root.minsize(300,400)
root.maxsize(300,400)
#Buttons
buttonFrame = tk.Canvas(root, bg='#bbb')
buttonFrame.grid(row=0, column=0, sticky=tk.N+tk.E+tk.S+tk.W)
buttonFrame.columnconfigure(0, weight=1)
scroll = tk.Scrollbar(root, command=buttonFrame.yview)
scroll.grid(row=0, column=1, sticky=tk.N+tk.E+tk.S+tk.W)
buttonFrame.configure(yscrollcommand=scroll.set)
for i in range(30):
tk.Button(buttonFrame, text=str(i+1)).grid(row=i, column=0, sticky=tk.N+tk.E+tk.S+tk.W)
root.mainloop()
正如您(希望)看到的,滑块甚至不能移动,也不会改变画布上的任何内容,即使我在画布的某个地方挤压一个scrollregion=(bla)
。你知道吗
2个问题:
a、 )我需要添加(或删除)什么,以便在按钮列表中滚动
b、 )当我使滚动条成为buttonFrame
而不是root
的子对象时,a.的修复是否仍然有效?你知道吗
要向画布添加小部件,必须使用
create_window
方法,而不是grid()
。然后在设置滚动区域之前必须更新画布。你知道吗如果您尝试这样做,我怀疑这不是您想要的,因为create\u window方法需要绝对定位(您不能使用grid或pack)。这就是为什么大多数人把一个框架放在画布上,然后添加他们的小部件。许多人已经抽象出这个人造框架,它实际上是另一个框架including me中画布上的一个框架。你知道吗
相关问题 更多 >
编程相关推荐