teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

2021/06/16 00:16

投稿

退会済みユーザー
answer CHANGED
@@ -1,87 +1,14 @@
1
- ようございます
1
+ こんにちは。
2
2
 
3
3
  問題文読ませていただきました。
4
4
 
5
- こんな感じでかがしょうか?
5
+ Label Widgetを使ってscrollbarを実装するのは難し
6
6
 
7
- ``` python
8
- import tkinter as tk
7
+ 1.canvas Widgetを作成
8
+ 2.canvas Widget内へLabel Widgetを配置する。
9
9
 
10
+ が良さそうです。
10
11
 
11
- class Application(tk.Frame):
12
- def __init__(self, master=None):
12
+ canvas Widget内へscrollbarを実装する方法はこちらの記事の「その他のWidgetを使った、scrollbar Widgetサンプル集」内でまとまっていますので、ご確認いただけますと幸いです。????‍♂️
13
- # Windowの初期設定を行う。
14
- super().__init__(master)
15
13
 
16
- # Windowの画面サイズを設定する。
17
- # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
18
- self.master.geometry("500x500")
19
-
20
- # Windowを親要素として、frame Widget(Frame)を作成する。
21
- # frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
22
- frame = tk.Frame(self.master)
23
-
24
- # Windowを親要素とした場合に、frame Widgetをどのように配置するのか?
25
- # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
26
- frame.pack()
27
-
28
- # frame Widget(Frame)を親要素として、canvas Widgetを作成する。
29
- # background : 背景色の設定
30
- # 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
31
- # width : 幅を設定
32
- # height : 高さを設定
33
- # scrollregion(w, n, e, s) : w : West, n : North, e : East, s : Southの略。
34
- # 設定したwidth(幅)、height(高さ)以上にscrollできる領域を設けたい場合に、方位に合わせて値を設定する。
35
- # 今回は、垂直方向へscrollさせたいので、sのみに値を設定する。
36
- # Canvasについて : https://kuroro.blog/python/ANyM9WLpd0LSXRQAELOj/
37
- canvas = tk.Canvas(frame, background="white", width=400,
38
- height=300, scrollregion=(0, 0, 0, 500))
39
-
40
- # label Widgetを作成する。
41
- # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
42
- aaa = tk.Label(text='aaa')
43
- # label Widgetを作成する。
44
- # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
45
- bbb = tk.Label(text='bbb')
46
- # label Widgetを作成する。
47
- # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
48
- ccc = tk.Label(text='ccc')
49
-
50
- # canvasへWidgetを配置する。
51
- # 参考 : https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/create_window.html
52
- # Canvasについて : https://kuroro.blog/python/ANyM9WLpd0LSXRQAELOj/
53
- canvas.create_window(20, 20, window=aaa)
54
- canvas.create_window(20, 40, window=bbb)
55
- canvas.create_window(20, 450, window=ccc)
56
-
57
- # frame Widget(Frame)を親要素として、scrollbar Widgetを作成する。
58
- # orient : 垂直方向へscrollbarを作成するように設定する。
59
- # command : scrollbarを動かした場合に、連動して表示する内容を設定する。今回は、canvas Widgetをy軸方向に動かした内容を表示する。
60
- # Scrollbarについ : https://kuroro.blog/python/vgx53M7D1d6C0R8ejp0V/
14
+ ・[Tkinterで使われるscrollbarとは?活用事例を交え徹底解説](https://kuroro.blog/python/vgx53M7D1d6C0R8ejp0V/)
61
- scrollbar = tk.Scrollbar(
62
- frame, orient=tk.VERTICAL, command=canvas.yview)
63
-
64
- # scrollbar Widgetの設定内容をcanvas Widgetと紐付ける。
65
- # yscrollcommand : canvas Widget内で上下移動した場合に、scrollbarが追従するように設定する。
66
- canvas["yscrollcommand"] = scrollbar.set
67
-
68
- # frame Widget(Frame)を親要素とした場合に、canvas Widgetをどのように配置するのか?
69
- # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
70
- canvas.grid(row=0, column=0)
71
- # frame Widget(Frame)を親要素とした場合に、scrollbar Widgetをどのように配置するのか?
72
- # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
73
- scrollbar.grid(row=0, column=1, sticky=(tk.N, tk.S))
74
-
75
-
76
- # Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
77
- if __name__ == "__main__":
78
- root = tk.Tk()
79
-
80
- app = Application(master=root)
81
-
82
- # Windowをループさせて、継続的にWindow表示させる。
83
- # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
84
- app.mainloop()
85
- ```
86
-
87
- ご確認のほど、よろしくお願いいたします。????‍♂️