Tkinter チュートリアル - スクロールバー
胡金庫
2023年1月30日
Tkinter Scrollbar ウィジェットは、通常、ListBox
、Text
、または Canvas
のようなウィジェットを垂直に、または Entry
を水平にスクロールするために使用されます。スライダーが正しい位置に表示されます。
Tkinter ScrollBar
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()
self.scrollbar = tk.Scrollbar(self.window)
Scrollbar
インスタンスを開始します。
self.listbox = tk.Listbox(self.window, yscrollcommand=self.scrollbar.set)
self.scrollbar.config(command=self.listbox.yview)
それらを正しく接続するには、Listbox
と Scrollbar
の両方を設定する必要があります。
yscrollcommand
コールバックをScrollbar
のset
に設定します。yscrollcommand
はスクロール可能なウィジェットのオプションであり、スクロールバーによって制御され、と通信するために使用されます垂直スクロールバー。Scrollbar
のcommand
をListbox
のyview
に設定します。ユーザーがScrollbar
のスライダーを動かすと、適切な引数でyview
メソッドを呼び出します。
Tkinter 水平スクロールバー
水平スクロールバーは、テキスト
やエントリ
などのウィジェットを水平方向にスクロールするために使用されます。
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()
self.scrollbar = tk.Scrollbar(self.window, orient=tk.HORIZONTAL)
orient
を HORIZONTAL
に指定することにより、水平スクロールバーを開始します。
self.text = tk.Text(self.window, wrap="none", xscrollcommand=self.scrollbar.set)
テキストを水平方向にスクロールするには、xscrollcommand
を Scrollbar
の set
メソッドに設定する必要がありますが、上記の例のように yscrollcommand
を設定する必要はありません。
self.scrollbar.config(command=self.text.xview)
同様に、水平スクロールバーのコールバックは、xview
メソッドではなく yview
に接続する必要があります。