回答編集履歴

4

代案を追記

2021/07/02 01:37

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -96,7 +96,51 @@
96
96
 
97
97
 
98
98
 
99
+ 追記(代案)
99
100
 
101
+
102
+
103
+ ```python
104
+
105
+ # ウィジェットは外部で予め作成しておく。(変更点: 親は root ではなくキャンバス)
106
+
107
+ fnt = "HG行書体"
108
+
109
+ title_label = tk.Label(cv, anchor = tk.W, text="~麻雀~", font=(fnt,100))
110
+
111
+ play_game_btn = tk.Button(cv, text="ゲーム開始", font=(fnt,40), command=ttl_play_click_btn)
112
+
113
+ player_setting_btn = tk.Button(cv, text="プレイヤー設定", font=(fnt,30), command=ttl_setting_click_btn)
114
+
115
+ check_rule_btn = tk.Button(cv, text="ルール確認", font=(fnt,40), command=ttl_rule_click_btn)
116
+
117
+
118
+
119
+ #ゲームスタート画面 place ではなく create_windowでキャンバスへ配置
120
+
121
+ def game_start():
122
+
123
+ cv.delete("game_start")
124
+
125
+ kw = {"tag": "game_start", "anchor": "nw"}
126
+
127
+ cv.create_window(340, 160, window=title_label, **kw)
128
+
129
+ cv.create_window(455, 400, window=play_game_btn, **kw)
130
+
131
+ cv.create_window(455, 520, window=player_setting_btn, **kw)
132
+
133
+ cv.create_window(455, 620, window=check_rule_btn, **kw)
134
+
135
+
136
+
137
+ ```
138
+
139
+
140
+
141
+
142
+
143
+ ----
100
144
 
101
145
  問題点2 について
102
146
 

3

訂正

2021/07/02 01:37

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -62,7 +62,9 @@
62
62
 
63
63
  問題点1 のウィジェットについては、
64
64
 
65
- ウィジェット生成時に name を付けることで、新しいウィジェットが生成されるのを抑制できます。
65
+ ~~ウィジェット生成時に name を付けることで、新しいウィジェットが生成されるのを抑制できます。~~
66
+
67
+ 訂正: 抑制はできますが、試してみて画面にちらつきが発生しました。
66
68
 
67
69
 
68
70
 
@@ -88,7 +90,7 @@
88
90
 
89
91
 
90
92
 
91
- プログラムの構造の大幅な変更が可能なら、本来は、
93
+ ~~プログラムの構造の大幅な変更が可能なら、本来は、~~
92
94
 
93
95
  ウィジェット生成処理は一度のみしか呼び出さないような構造にしたほうが良いです。
94
96
 

2

補足

2021/07/02 01:26

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -149,3 +149,5 @@
149
149
  tkinter 等の GUI ライブラリは、フレーム単位の描画ではなく、
150
150
 
151
151
  単にタイマー処理で重ねて表示される事になります。
152
+
153
+ その為、キャンバスへの描画では毎回 delete してから create のような冗長な処理が発生する。

1

文法の修正

2021/07/02 01:15

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
 
83
- デメリットとしては、クラス等にしたときに再利用出来ません
83
+ デメリットとしては、クラス等にしたときに再利用出来なくなり
84
84
 
85
85
  あまり使わない方法ですが、このような毎回呼び出される処理の中でウィジェット生成を行う場合の、
86
86