回答編集履歴

2

文章の修正

2020/08/05 00:28

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -12,9 +12,9 @@
12
12
 
13
13
 
14
14
 
15
- ですが、現状のコードでは canvas.bbox("all") は None なる為
15
+ ですが、現状のコードではキャンバス何も描画されておらず
16
16
 
17
- 他にも修正が必要です。
17
+ canvas.bbox("all") は None になる為、他にも修正が必要です。
18
18
 
19
19
 
20
20
 

1

動作サンプルコードを追加

2020/08/05 00:28

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -35,3 +35,85 @@
35
35
  そのままコピーして実行可能な形での掲載をお願いします。
36
36
 
37
37
  他に、省略されてる部分に問題が有ることもありますし、動作確認が出来ません。
38
+
39
+
40
+
41
+ ----
42
+
43
+
44
+
45
+ ```python
46
+
47
+ import tkinter as tk
48
+
49
+
50
+
51
+ root = tk.Tk()
52
+
53
+ canvas = tk.Canvas(root, width=400, height=400)
54
+
55
+ frame = tk.Frame(canvas)
56
+
57
+
58
+
59
+ for row in range(40):
60
+
61
+ for column in range(20):
62
+
63
+ text = "({}, {})".format(row, column)
64
+
65
+ chk = tk.Checkbutton(frame, text=text)
66
+
67
+ chk.grid(row=row, column=column)
68
+
69
+
70
+
71
+ # スクロールバーの配置
72
+
73
+ hbar = tk.Scrollbar(root, orient=tk.HORIZONTAL)
74
+
75
+ hbar.config(command=canvas.xview)
76
+
77
+ hbar.pack(side=tk.BOTTOM, fill=tk.X)
78
+
79
+ vbar = tk.Scrollbar(root, orient=tk.VERTICAL)
80
+
81
+ vbar.config(command=canvas.yview)
82
+
83
+ vbar.pack(side=tk.RIGHT,fill=tk.Y)
84
+
85
+
86
+
87
+ canvas.create_window(0, 0, window=frame)
88
+
89
+ canvas.pack(fill=tk.BOTH, expand=True)
90
+
91
+ canvas.update_idletasks()
92
+
93
+
94
+
95
+ canvas.config(
96
+
97
+ scrollregion=canvas.bbox("all"),
98
+
99
+ xscrollcommand=hbar.set,
100
+
101
+ yscrollcommand=vbar.set)
102
+
103
+ # スクロールバー位置のリセット
104
+
105
+ canvas.xview_moveto(0)
106
+
107
+ canvas.yview_moveto(0)
108
+
109
+
110
+
111
+ print(canvas.bbox("all"))
112
+
113
+ root.mainloop()
114
+
115
+
116
+
117
+
118
+
119
+ ```