Tkinter 教程-滚动条

Jinku Hu 2023年1月30日 2019年12月10日
  1. Tkinter 滚动条
  2. Tkinter 水平滚动条
Tkinter 教程-滚动条

Tkinter 滚动条控件通常用于滚动控件,比如 ListBoxTextCanvas 在竖直方向上滚动或 Entry 在水平方向滚动。它在合适的位置显示滑块。

Tkinter 滚动条

import tkinter as tk

class Scrollbar_Example:
    def __init__(self):
        self.window = tk.Tk()

        self.scrollbar = tk.Scrollbar(self.window)
        self.scrollbar.pack(side="right", fill="y")

        self.listbox = tk.Listbox(self.window, yscrollcommand=self.scrollbar.set)
        for i in range(100):
            self.listbox.insert("end", str(i))
        self.listbox.pack(side="left", fill="both")

        self.scrollbar.config(command=self.listbox.yview)

        self.window.mainloop()

if __name__ == '__main__':
    app = Scrollbar_Example()

Tkinter 基本滚动条

self.scrollbar = tk.Scrollbar(self.window)

它启动 Scrollbar 实例。

self.listbox = tk.Listbox(self.window, yscrollcommand=self.scrollbar.set)
.
.
self.scrollbar.config(command=self.listbox.yview)

我们需要同时配置 ListboxScrollbar 以使他们能正确地耦合在一起。

  1. yscrollcommand 回调设置为 Scrollbarsetyscrollcommand 是由滚动条控制的可滚动控件的选项,用于与垂直滚动条进行通信。
  2. 设定 ScrollbarcommandListboxyview。当用户移动 Scrollbar 的滑块时,它将使用适当的参数调用 yview 方法。

Tkinter 水平滚动条

水平滚动条用于在水平方向滚动窗口控件 TextEntry 等。

import tkinter as tk

class Scrollbar_Example:
    def __init__(self):
        self.window = tk.Tk()

        self.scrollbar = tk.Scrollbar(self.window, orient=tk.HORIZONTAL)
        self.scrollbar.pack(side="bottom", fill="x")

        self.text = tk.Text(self.window,
                            wrap = "none",
                            xscrollcommand=self.scrollbar.set)
        
        self.text.insert("end", str(dir(tk.Scrollbar)))
        self.text.pack(side="top", fill="x")

        self.scrollbar.config(command=self.text.xview)

        self.window.mainloop()

if __name__ == '__main__':
    app = Scrollbar_Example()

Tkinter 滚动条水平

self.scrollbar = tk.Scrollbar(self.window, orient=tk.HORIZONTAL)

通过将 orient 指定为 HORIZONTAL 来启动水平滚动条。

self.text = tk.Text(self.window,
                            wrap = "none",
                            xscrollcommand=self.scrollbar.set)

要水平滚动文本,我们需要将 xscrollcommand 设置为 Scrollbarset 方法,而不是设置上面的示例中的 yscrollcommand

self.scrollbar.config(command=self.text.xview)

相应地,水平滚动条的回调应与 xview 方法连接,而不是与 yview 方法连接。

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn