基本的な考え方としては
・Top Widget(root)上に Frame WidgetとScrollbarを置く
・各ラベルは TopWidget上ではなく、Frame上に置く
・ScrollbarでFrame Widgetの描画範囲を制御する
となります。が残念ながら Frame WidgetはScrollbarに対応しておりません。
そこで、まず Scrollbarに対応している Canvas Widget をTop Widget上に配置し、そのCanvas Widget上に Frame Widgetを配置する(各ラベルはこの上配置)と良いかと思います。
以下は動作サンプル
Python
1import tkinter as tk
2
3root = tk.Tk()
4root.geometry("500x500")
5
6# Canvas Widget を生成
7canvas = tk.Canvas(root)
8
9# Top Widget上に Scrollbar を生成して配置
10bar = tk.Scrollbar(root, orient=tk.VERTICAL)
11bar.pack(side=tk.RIGHT, fill=tk.Y)
12bar.config(command=canvas.yview) # ScrollbarでCanvasを制御
13
14# Canvas Widget をTopWidget上に配置
15canvas.config(yscrollcommand=bar.set) # Canvasのサイズ変更をScrollbarに通知
16canvas.config(scrollregion=(0,0,500,500)) #スクロール範囲
17canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
18
19# Frame Widgetを 生成
20frame = tk.Frame(canvas)
21
22# Frame Widgetを Canvas Widget上に配置()
23canvas.create_window((0,0), window=frame, anchor=tk.NW, width=500, height=500)
24
25# Frame Widget上に各種ラベルを表示
26aaa = tk.Label(frame, text='aaa')
27aaa.place(x=20, y=20)
28
29bbb = tk.Label(frame, text='bbb')
30bbb.place(x=20, y=40)
31
32ccc = tk.Label(frame, text='ccc')
33ccc.place(x=20, y=450)
34
35ddd = tk.Label(frame, text='ddd')
36ddd.place(x=450, y=450)
37
38root.mainloop()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/17 02:44
2019/05/23 04:16
2019/05/23 23:49 編集
2019/05/24 02:52