python - 将滚动条放在 Canvas 上的框架上

标签 python python-2.7 canvas tkinter scrollbar

我是 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/

相关文章:

python - 创建ModelAdmin对象时没有属性 '_meta'错误

python - 使用 python 如何为三元变量提供 0, 1 , 2 ?

python - python中日志函数的简单绘图

android - 为什么 Canvas.drawPath() 这么慢?

python - python中的回文迭代检查器

python - 如何使用 pandas 计算四分位数前滚?

python - 在 Pandas 中添加分位数作为新列

Python:导入与函数同名的模块

java - 在 Canvas Android中触摸事件后在随机位置绘制矩形

JavaScript Canvas 创建模式