我是Python和Tkinter的新手。
我正在练习使用Frames,Canvas和Scrollbars,我遇到了一个问题:
我有一个Canvas作为我的主人,一个框架位于Canvas的特定坐标上。
我会在框架中放置按钮和标签,所以我选择不使用列表框。
现在,如何在框架上创建滚动条,以便框架中的标签超过5(每个标签以垂直方式放置),然后会出现ScrollBar?
以下是示例代码:
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()
答案 0 :(得分:1)
您无法滚动Frame
,但可以滚动画布。务必将画布的滚动区域设置为框架区域。然后,您可以添加pack()
的滚动条,并将其隐藏pack_forget()
。
也许你绑定到"配置"当大小改变时你会知道框架的事件。