我是 Python 和 Tkinter 的新手。
我正在练习框架、 Canvas 和滚动条的使用,但我遇到了一个问题:
我有一个 Canvas 作为我的 Master 和一个位于 Canvas 特定坐标上的 Frame。
我会将按钮和标签放在框架中,所以我选择不使用列表框。
现在,如何在框架上制作滚动条,如果框架中的标签超过 5 个(每个标签都以垂直方式放置),那么滚动条就会出现?
这里是示例代码:
from Tkinter import *
class GUI():
def __init__(self):
self.namelist = ["Mark","Anna","Jason","Lenna","Leo","Zucharich","Robinson","AReallyLongNameThatMightExist"]
self.canvas = Canvas(width=1200,height=700)
self.canvas.pack(expand=YES,fill=BOTH)
def Friends(self):
controlframe = Frame(self.canvas)
controlframe.place(x=600,y=300)
#Frame for showing names of friends
for x in self.namelist:
frame = Frame(controlframe)
frame.pack()
Name = Label(frame,text="%s "%x).pack(side=LEFT)
chatButton = Button(frame,text="Chat").pack(side=LEFT)
delButton = Button(frame,text="Delete").pack(side=LEFT)
setcloseButton = Button(frame,text="Set Close").pack(side=LEFT)
setgroupButton = Button(frame,text="Set Group").pack(side=LEFT)
mainloop()
GUI = GUI()
GUI.Friends()
最佳答案
您不能滚动 Frame
但可以滚动 Canvas 。请务必将 Canvas 的滚动区域设置为框架区域。然后您可以使用 pack()
添加滚动条并使用 pack_forget()
隐藏它。
也许如果您绑定(bind)到框架的“配置”事件,您就会知道尺寸何时发生变化。
关于python - 将滚动条放在 Canvas 上的框架上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435975/