【问题标题】:Putting Scrollbar on Frame that is on Canvas将滚动条放在画布上的框架上
【发布时间】:2014-04-21 13:44:40
【问题描述】:

我是 Python 和 Tkinter 的新手。

我正在练习使用框架、画布和滚动条,但遇到了一个问题:

我有一个 Canvas 作为我的 Master 和一个 Frame,它位于 Canvas 的特定坐标上。

我会将按钮和标签放在框架中,所以我选择不使用列表框。

现在,我如何在框架上制作滚动条,如果框架中的标签超过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()

【问题讨论】:

    标签: python python-2.7 canvas tkinter scrollbar


    【解决方案1】:

    您不能滚动Frame,但您可以滚动画布。请务必将画布的滚动区域设置为框架区域。然后您可以使用pack() 添加滚动条并使用pack_forget() 隐藏它。

    也许如果您绑定到框架的“配置”事件,您就会知道大小何时发生变化。

    【讨论】:

    • 也许我可以创建一个画布,然后将框架放在该画布上。你知道如何在画布上放置limit,这样它就只显示一定数量的标签,然后如果超过,就会出现滚动条?
    猜你喜欢
    • 2017-01-18
    • 1970-01-01
    • 2016-07-15
    • 2017-12-21
    • 2018-01-16
    • 2011-12-05
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    相关资源
    最近更新 更多