サーチ…


前書き

スクロールバーは、リストボックス、キャンバス、およびテキストウィジェットに追加できます。さらに、Entryウィジェットは水平方向にスクロールすることができます。他のタイプのウィジェットをスクロールできるようにするには、それらをキャンバスまたはテキストウィジェットの中に配置する必要があります。

構文

  • スクロールバー= tk.Scrollbar(親、** kwargs)

パラメーター

パラメータ説明
tkinterウィジェットは階層内に存在します。ルートウィンドウを除いて、すべてのウィジェットには親があります。一部のオンラインチュートリアルでは、この「マスター」と呼ばれています。ウィジェットがpack、placeまたはgridで画面に追加されると、このウィジェットがこの親ウィジェットの内側に表示されます
オリエント "vertical" (デフォルト値)または"horizontal"いずれかのスクロールバーの向き

備考

これらの例では、tkinter import tkinter as tk (tminter)( import tkinter as tk (3))またはimport Tkinter as tkimport Tkinter as tk (python 2))をimport tkinter as tkてインポートしたと仮定しています。

テキストウィジェットへの垂直スクロールバーの接続

ウィジェットとスクロールバーの間の接続は両方向に移動します。スクロールバーは、ウィジェットと同じ高さになるように垂直方向に展開する必要があります。

text = tk.Text(parent)
text.pack(side="left")

scroll_y = tk.Scrollbar(parent, orient="vertical", command=text.yview)
scroll_y.pack(side="left", expand=True, fill="y")

text.configure(yscrollcommand=scroll_y.set)

キャンバスウィジェットを水平および垂直にスクロールする

原則はテキストウィジェットの場合と基本的に同じですが、 Gridレイアウトを使用してウィジェットの周りにスクロールバーを配置します。

canvas = tk.Canvas(parent, width=150, height=150)
canvas.create_oval(10, 10, 20, 20, fill="red")
canvas.create_oval(200, 200, 220, 220, fill="blue")
canvas.grid(row=0, column=0)

scroll_x = tk.Scrollbar(parent, orient="horizontal", command=canvas.xview)
scroll_x.grid(row=1, column=0, sticky="ew")

scroll_y = tk.Scrollbar(parent, orient="vertical", command=canvas.yview)
scroll_y.grid(row=0, column=1, sticky="ns")

canvas.configure(yscrollcommand=scroll_y.set, xscrollcommand=scroll_x.set)

Textウィジェットとは異なり、Canvasのスクロール可能領域はコンテンツが変更されたときに自動的に更新されないため、 scrollregion引数を使用して手動で定義して更新する必要があります。

canvas.configure(scrollregion=canvas.bbox("all"))

canvas.bbox("all")は、キャンバス全体のコンテンツに適合する四角形の座標を返します。

ウィジェットのグループをスクロールする

ウィンドウに多数のウィジェットが含まれていると、すべてが表示されないことがあります。ただし、ウィンドウ(TkまたはToplevelインスタンス)もフレームもスクロール可能ではありません。ウィンドウの内容をスクロール可能にする1つの方法は、すべてのウィジェットをフレームに入れ、次にcreate_windowメソッドを使用してこのフレームをCanvasに埋め込むことです。

canvas = tk.Canvas(parent)
scroll_y = tk.Scrollbar(parent, orient="vertical", command=canvas.yview)

frame = tk.Frame(canvas)
# group of widgets
for i in range(20):
    tk.Label(frame, text='label %i' % i).pack()
# put the frame in the canvas
canvas.create_window(0, 0, anchor='nw', window=frame)
# make sure everything is displayed before configuring the scrollregion
canvas.update_idletasks()

canvas.configure(scrollregion=canvas.bbox('all'), 
                 yscrollcommand=scroll_y.set)
                 
canvas.pack(fill='both', expand=True, side='left')
scroll_y.pack(fill='y', side='right')


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow