首页  >  文章  >  后端开发  >  如何在 Tkinter 中创建带有垂直滚动条的可滚动框架?

如何在 Tkinter 中创建带有垂直滚动条的可滚动框架?

Patricia Arquette
Patricia Arquette原创
2024-11-23 20:35:10468浏览

How to Create a Scrollable Frame with a Vertical Scrollbar in Tkinter?

Tkinter 框架滚动条

使用可滚动框架

tkinter 包不提供框架的内置垂直滚动条。但是,您可以使用 Canvas、Scrollbar 和 Frame 小部件的组合来创建一个。下面是一个示例:

class VerticalScrolledFrame(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        # Create a canvas
        canvas = tk.Canvas(self)
        canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

        # Create a vertical scrollbar
        scrollbar = ttk.Scrollbar(self, orient=tk.VERTICAL)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

        # Connect the scrollbar to the canvas
        scrollbar.config(command=canvas.yview)
        canvas.config(yscrollcommand=scrollbar.set)

        # Reset the view
        canvas.xview_moveto(0)
        canvas.yview_moveto(0)

        # Create a frame inside the canvas
        self.interior = ttk.Frame(canvas)
        canvas.create_window(0, 0, window=self.interior, anchor=NW)

将滚动条绑定到鼠标滚轮

默认情况下,Tkinter 滚动条缺少鼠标滚轮滚动功能。要启用它,我们可以将鼠标滚轮事件绑定到画布的 yview_scroll 方法:

canvas.bind_all('<MouseWheel>', lambda event: canvas.yview_scroll(int(-event.delta/120), "units"))

与 OP 代码的差异

  • VerticalScrolledFrame 类提供了更强大的可滚动框架实现。
  • 它自动调整画布大小以适应内框。
  • 它还支持鼠标滚轮滚动。

其他点

  • 对于常规小部件(例如标签),网格优于位置,因为它提供了更结构化的布局。
  • anchor='nw' 指定窗口(内框)应位于画布的西北角。

以上是如何在 Tkinter 中创建带有垂直滚动条的可滚动框架?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn