ホームページ > バックエンド開発 > Python チュートリアル > Tkinter でキャンバスとスクロールバーを使用してスクロール可能なフレームを作成するにはどうすればよいですか?

Tkinter でキャンバスとスクロールバーを使用してスクロール可能なフレームを作成するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-26 08:57:12
オリジナル
1007 人が閲覧しました

How can I create a scrollable frame in Tkinter using a canvas and scrollbar?

Tkinter を利用してフレームにスクロールバー機能を追加する

Tkinter でスクロール可能なフレームを作成するには、スクロールバーを組み込む必要があります。これにより、フレームの自動スクロールが可能になります。フレームの高さを超えるコンテンツ。洞察力に富んだ議論に基づいて、フレームを構築し、その中にキャンバスを囲み、スクロールバーをフレームに接続すると、目的の機能が達成されることが示唆されました。次に、追加のフレームを収容するために、キャンバス内にウィンドウ オブジェクトが考案されました。

次の Python コードを使用すると、垂直方向にスクロール可能なフレームを効果的に実装できます。

import tkinter as tk
import tkinter.ttk as ttk

class VerticalScrolledFrame(ttk.Frame):
    def __init__(self, parent, *args, **kw):
        ttk.Frame.__init__(self, parent, *args, **kw)
        vscrollbar = ttk.Scrollbar(self, orient=VERTICAL)
        vscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE)
        canvas = tk.Canvas(self, bd=0, highlightthickness=0, yscrollcommand=vscrollbar.set)
        canvas.pack(side=LEFT, fill=BOTH, expand=TRUE)
        vscrollbar.config(command=canvas.yview)
        canvas.xview_moveto(0)
        canvas.yview_moveto(0)
        self.interior = interior = ttk.Frame(canvas)
        interior_id = canvas.create_window(0, 0, window=interior, anchor=NW)
        def _configure_interior(event):
            size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
            canvas.config(scrollregion="0 0 %s %s" % size)
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.config(width=interior.winfo_reqwidth())
        interior.bind('<Configure>', _configure_interior)
        def _configure_canvas(event):
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.itemconfigure(interior_id, width=canvas.winfo_width())
        canvas.bind('<Configure>', _configure_canvas)

root = tk.Tk()
frame = VerticalScrolledFrame(root)
frame.pack()
for i in range(10):
    ttk.Button(frame.interior, text="Button " + str(i)).pack()
root.mainloop()
ログイン後にコピー

クエリのアドレス指定:

  1. この機能は、次の方法でより効率的に実現できます。提供されたコードを利用します。
  2. フレーム内のウィジェットのレイアウトをより詳細に制御できるため、グリッド メソッドが推奨されます。
  3. anchor='nw' 引数は、ウィンドウがキャンバスの北西隅に固定され、フレームが垂直にスクロールしてもコンテンツが表示されたままになります。

以上がTkinter でキャンバスとスクロールバーを使用してスクロール可能なフレームを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート