質問編集履歴

5

コンボボックスの内容変更

2021/11/26 10:52

投稿

saya24
saya24

スコア222

test CHANGED
File without changes
test CHANGED
@@ -366,7 +366,7 @@
366
366
 
367
367
  # 1 Key選択コンボボックス
368
368
 
369
- tmp_list = [1, 2, 3, 4, 5]
369
+ tmp_list = [12345, 22345, 32345, 42345, 52345]
370
370
 
371
371
  cmbox_Key = ttk.Combobox(frmConvMenu, width=3, height=3, font=("Arial", 16), values=tmp_list)
372
372
 

4

漏れを追記

2021/11/26 10:51

投稿

saya24
saya24

スコア222

test CHANGED
File without changes
test CHANGED
@@ -246,18 +246,22 @@
246
246
 
247
247
  def initial_frmConvMenu():
248
248
 
249
+ # 漏れ
250
+
251
+ cmbox_Key.delete(0, tk.END)
252
+
253
+
254
+
255
+ global cmbox_Key_ttp
256
+
257
+ #if cmbox_key_ttp.winfo_exist():
258
+
259
+ # cmbox_key_ttp.hidetip()
260
+
261
+ cmbox_Key_ttp.text = ""
262
+
249
263
 
250
264
 
251
- global cmbox_Key_ttp
252
-
253
- #if cmbox_key_ttp.winfo_exist():
254
-
255
- # cmbox_key_ttp.hidetip()
256
-
257
- cmbox_Key_ttp.text = ""
258
-
259
-
260
-
261
265
  # コンボボックス選択
262
266
 
263
267
  def cmbox_KeyChange(event=None):
@@ -491,3 +495,13 @@
491
495
  root.mainloop()
492
496
 
493
497
  ```
498
+
499
+
500
+
501
+ ```python
502
+
503
+ # 漏れ
504
+
505
+ cmbox_Key.delete(0, tk.END)
506
+
507
+ ```

3

お試しソース追加

2021/11/25 12:01

投稿

saya24
saya24

スコア222

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,57 @@
2
2
 
3
3
 
4
4
 
5
+ ### 質問
6
+
7
+ 画面遷移時、フレーム上のWIDGETを初期表示段階に元に戻すことを行っています。
8
+
9
+ (同じフレームを再度rootに呼び出すと 前回当該フレームに表れていたWIDGETが 前回のまま表示されるので)
10
+
11
+
12
+
13
+ 動的にヒントテキストを生成できたのは 良かったのですが、生成したヒントテキストの削除方法が分からず
14
+
15
+ 同じフレームを 呼出すと 前回登場させたヒントテキストが 残ってしまう問題が生じています。
16
+
17
+
18
+
19
+ ご紹介のクラスは ラベルのWIDGETを流用した作りなのでしょうが、どういった名前で作られているのか・どうすれば削除できるのかが分かりません。( pack_forget() の利用と推察するも)
20
+
21
+
22
+
23
+ 当該フレームに 自分が定義したラベルもあるので 無条件にラベルを消すこともできません。
24
+
25
+ JQueryみたいに インデックス指定で要素を消すみないなことができますでしょうか?
26
+
27
+
28
+
29
+ 削除方法 お分かりの方おられましたら ご教示をよろしくお願い致します。
30
+
31
+
32
+
33
+ ### 1501 画像追加
34
+
35
+ ![イメージ説明](e9e88824677cf471bdc47bcb2f042474.png)
36
+
37
+
38
+
5
- 以下のクラをまるっと貼り付け
39
+ ### 1730 お試しソー追加
6
-
40
+
7
- ```Python
41
+ ```python
42
+
43
+ # tkinterのインポート
44
+
45
+ import tkinter as tk
46
+
47
+ import tkinter.ttk as ttk
48
+
49
+ import math
50
+
51
+ import os
52
+
53
+ import datetime
54
+
55
+
8
56
 
9
57
  class CreateToolTip(object):
10
58
 
@@ -110,48 +158,336 @@
110
158
 
111
159
  tw.destroy()
112
160
 
161
+
162
+
163
+
164
+
165
+ #################################################################################
166
+
167
+ # 画面生成 #
168
+
169
+ #################################################################################
170
+
171
+ def resource_path(relative_path):
172
+
173
+ try:
174
+
175
+ # PyInstaller creates a temp folder and stores path in _MEIPASS
176
+
177
+ base_path = sys._MEIPASS
178
+
179
+ except Exception:
180
+
181
+ base_path = os.path.abspath(".")
182
+
183
+
184
+
185
+ return os.path.join(base_path, relative_path)
186
+
187
+
188
+
189
+ def adjust_windowsize(root):
190
+
191
+ ww = root.winfo_screenwidth()
192
+
193
+ wh = root.winfo_screenheight()
194
+
195
+
196
+
197
+ lw = math.ceil(ww * 0.3208)
198
+
199
+ lh = math.ceil(wh * 0.477)
200
+
201
+
202
+
203
+ root.geometry(str(lw)+"x"+str(lh)+"+"+str(int(ww/2-lw/2))+"+"+str(int(wh/2-lh/2)))
204
+
205
+
206
+
207
+ #################################################################################
208
+
209
+ # フレーム生成 #
210
+
211
+ #################################################################################
212
+
213
+ def generate_frame(root):
214
+
215
+ # フレーム切替え=画面遷移
216
+
217
+ def change_frame(frame):
218
+
219
+ if frame.winfo_name() == "frmIOMenu":
220
+
221
+ btn_AssignInputFile.focus_set()
222
+
223
+ initial_frmIOMenu()
224
+
225
+ elif frame.winfo_name() == "frmConvMenu":
226
+
227
+ btn_ReturnMenu.focus_set()
228
+
229
+ initial_frmConvMenu()
230
+
231
+ else:
232
+
233
+ btn_RunMenu.focus_set()
234
+
235
+
236
+
237
+ frame.tkraise()
238
+
239
+ #############################################################################
240
+
241
+ # 画面制御関数 変換定義 #
242
+
243
+ #############################################################################
244
+
245
+ # 初期化処理
246
+
247
+ def initial_frmConvMenu():
248
+
249
+
250
+
251
+ global cmbox_Key_ttp
252
+
253
+ #if cmbox_key_ttp.winfo_exist():
254
+
255
+ # cmbox_key_ttp.hidetip()
256
+
257
+ cmbox_Key_ttp.text = ""
258
+
259
+
260
+
261
+ # コンボボックス選択
262
+
263
+ def cmbox_KeyChange(event=None):
264
+
265
+
266
+
267
+ cmbox_Key_ttp.text = event.widget.get()
268
+
269
+
270
+
271
+
272
+
273
+ #############################################################################
274
+
275
+ # STYLE #
276
+
277
+ #############################################################################
278
+
279
+ style = ttk.Style()
280
+
281
+ style.theme_use('winnative')
282
+
283
+ style.configure("TCombobox", arrowsize=0)
284
+
285
+ style.configure("TButton", font=("Arial", 16))
286
+
287
+ style.configure("TFrame", background="#FFFFCC")
288
+
289
+ style.configure("TRadiobutton", background="#FFFFCC")
290
+
291
+ style.configure("TLabel", font=("Arial", 16), anchor='', background="#FFFFCC")
292
+
293
+ style.configure("TLabelframe", background="#FFFFCC", relief="sunken")
294
+
295
+ style.configure("TLabelframe.Label", foreground="red", font=("Arial", 16), background="#FFFFCC")
296
+
297
+ style.configure("LTREE.Treeview", background="black", foreground="white", fieldbackground="black", font=("Arial", 16), rowheight=25,)
298
+
299
+ style.configure("UTREE.Treeview", background="white", foreground="black", fieldbackground="white", font=("Arial", 16), rowheight=25,)
300
+
301
+
302
+
303
+ style.configure("Treeview.Heading", background="green", foreground="white", font=("Arial", 16), rowheight=25,)
304
+
305
+
306
+
307
+ #############################################################################
308
+
309
+ # メインメニュー用フレーム設置 #
310
+
311
+ #############################################################################
312
+
313
+ frmMain = ttk.Frame(root, name="frmMain")
314
+
315
+ frmMain.grid(row=0, column=0, sticky=tk.E + tk.W + tk.N + tk.S)
316
+
317
+
318
+
319
+ # メインメニューにボタン配置
320
+
321
+ btn_SettingMenu = ttk.Button(frmMain, text = "入出力定義")
322
+
323
+ btn_SettingMenu.pack(fill = tk.BOTH, expand=True)
324
+
325
+
326
+
327
+ btn_SettingMenu = ttk.Button(frmMain, text = "変換定義", command=lambda: change_frame(frmConvMenu))
328
+
329
+ btn_SettingMenu.pack(fill = tk.BOTH, expand=True)
330
+
331
+ btn_SettingMenu.bind('<Return>', lambda a: change_frame(frmConvMenu))
332
+
333
+
334
+
335
+ btn_RunMenu = ttk.Button(frmMain, text = "実行メニュー")
336
+
337
+ btn_RunMenu.pack(fill = tk.BOTH, expand=True)
338
+
339
+ btn_RunMenu.focus_set()
340
+
341
+
342
+
343
+ btn_Close = ttk.Button(frmMain, text = "終了", command=root.destroy)
344
+
345
+ btn_Close.pack(fill = tk.BOTH, expand=True)
346
+
347
+ #############################################################################
348
+
349
+ # 変換対応表メニュー用フレーム設置 #
350
+
351
+ #############################################################################
352
+
353
+ frmConvMenu = ttk.Frame(root, name="frmConvMenu")
354
+
355
+ frmConvMenu.grid_rowconfigure([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], weight=1)
356
+
357
+ frmConvMenu.grid_columnconfigure([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], weight=1, minsize=40)
358
+
359
+ frmConvMenu.grid(row=0, column=0, sticky=tk.E + tk.W + tk.N + tk.S)
360
+
361
+
362
+
363
+ # 1 Key選択コンボボックス
364
+
365
+ tmp_list = [1, 2, 3, 4, 5]
366
+
367
+ cmbox_Key = ttk.Combobox(frmConvMenu, width=3, height=3, font=("Arial", 16), values=tmp_list)
368
+
369
+ cmbox_Key.grid(row=1, column=6, sticky=tk.E + tk.W + tk.S)
370
+
371
+ cmbox_Key.bind("<<ComboboxSelected>>", cmbox_KeyChange)
372
+
373
+
374
+
375
+ global cmbox_Key_ttp
376
+
377
+ cmbox_Key_ttp = CreateToolTip(cmbox_Key, cmbox_Key.get())
378
+
379
+
380
+
381
+ # 11 メニューへボタン
382
+
383
+ btn_ReturnMenu = ttk.Button(frmConvMenu, text = "閉じる", command=lambda: change_frame(frmMain))
384
+
385
+ btn_ReturnMenu.grid(row=11, column=8, sticky=tk.E + tk.W, padx=(0,10))
386
+
387
+
388
+
389
+
390
+
391
+ # 起動時メインのフレームを前面に
392
+
393
+ frmMain.tkraise()
394
+
395
+
396
+
397
+ ##########################################################################################################
398
+
399
+ # TkInter GUIアプリケーション起動 #
400
+
401
+ ##########################################################################################################
402
+
403
+ if __name__ == "__main__":
404
+
405
+ # ウインドウの作成
406
+
407
+ root = tk.Tk()
408
+
409
+
410
+
411
+ #フォームサイズを実行端末から導き、ド真中に配置表示
412
+
413
+ adjust_windowsize(root)
414
+
415
+
416
+
417
+ #タイトルを指定
418
+
419
+ root.title("TkInterの勉強")
420
+
421
+
422
+
423
+ #フレーム切替え達成の上で とても重要、ルートのグリッド定義
424
+
425
+ root.grid_columnconfigure(0, weight=1)
426
+
427
+ root.grid_columnconfigure(1, weight=1)
428
+
429
+ root.grid_columnconfigure(2, weight=1)
430
+
431
+ root.grid_columnconfigure(3, weight=1)
432
+
433
+ root.grid_columnconfigure(4, weight=1)
434
+
435
+ root.grid_columnconfigure(5, weight=1)
436
+
437
+ root.grid_columnconfigure(6, weight=1)
438
+
439
+ root.grid_columnconfigure(7, weight=1)
440
+
441
+ root.grid_columnconfigure(8, weight=1)
442
+
443
+ root.grid_columnconfigure(9, weight=1)
444
+
445
+
446
+
447
+ root.grid_rowconfigure(0, weight=1)
448
+
449
+ root.grid_rowconfigure(1, weight=1)
450
+
451
+ root.grid_rowconfigure(2, weight=1)
452
+
453
+ root.grid_rowconfigure(3, weight=1)
454
+
455
+ root.grid_rowconfigure(4, weight=1)
456
+
457
+ root.grid_rowconfigure(5, weight=1)
458
+
459
+ root.grid_rowconfigure(6, weight=1)
460
+
461
+ root.grid_rowconfigure(7, weight=1)
462
+
463
+ root.grid_rowconfigure(8, weight=1)
464
+
465
+ root.grid_rowconfigure(9, weight=1)
466
+
467
+ root.grid_rowconfigure(10, weight=1)
468
+
469
+ root.grid_rowconfigure(11, weight=1)
470
+
471
+
472
+
473
+ #フォームの最大化、×ボタン操作を無効化
474
+
475
+ root.resizable(0,0)
476
+
477
+ root.protocol('WM_DELETE_WINDOW', (lambda: 'pass')())
478
+
479
+
480
+
481
+ # カーソル変更
482
+
483
+ root["cursor"] = "hand2"
484
+
485
+
486
+
487
+ generate_frame(root)
488
+
489
+
490
+
491
+ root.mainloop()
492
+
113
493
  ```
114
-
115
- コンボボックスからアイテムが選択された、と検知する関数の中で 以下を記述しただけのことです。
116
-
117
- ```python
118
-
119
- cmbox_Key_ttp = CreateToolTip(cmbox_Key, cmbox_Key.get()) # ツールチップで全容を表示
120
-
121
- ```
122
-
123
-
124
-
125
-
126
-
127
- ### 質問
128
-
129
- 画面遷移時、フレーム上のWIDGETを初期表示段階に元に戻すことを行っています。
130
-
131
- (同じフレームを再度rootに呼び出すと 前回当該フレームに表れていたWIDGETが 前回のまま表示されるので)
132
-
133
-
134
-
135
- 動的にヒントテキストを生成できたのは 良かったのですが、生成したヒントテキストの削除方法が分からず
136
-
137
- 同じフレームを 呼出すと 前回登場させたヒントテキストが 残ってしまう問題が生じています。
138
-
139
-
140
-
141
- ご紹介のクラスは ラベルのWIDGETを流用した作りなのでしょうが、どういった名前で作られているのか・どうすれば削除できるのかが分かりません。( pack_forget() の利用と推察するも)
142
-
143
-
144
-
145
- 当該フレームに 自分が定義したラベルもあるので 無条件にラベルを消すこともできません。
146
-
147
- JQueryみたいに インデックス指定で要素を消すみないなことができますでしょうか?
148
-
149
-
150
-
151
- 削除方法 お分かりの方おられましたら ご教示をよろしくお願い致します。
152
-
153
-
154
-
155
- ### 1501 画像追加
156
-
157
- ![イメージ説明](e9e88824677cf471bdc47bcb2f042474.png)

2

画像追加

2021/11/25 08:26

投稿

saya24
saya24

スコア222

test CHANGED
File without changes
test CHANGED
@@ -149,3 +149,9 @@
149
149
 
150
150
 
151
151
  削除方法 お分かりの方おられましたら ご教示をよろしくお願い致します。
152
+
153
+
154
+
155
+ ### 1501 画像追加
156
+
157
+ ![イメージ説明](e9e88824677cf471bdc47bcb2f042474.png)

1

誤記

2021/11/25 06:01

投稿

saya24
saya24

スコア222

test CHANGED
File without changes
test CHANGED
@@ -130,21 +130,21 @@
130
130
 
131
131
  (同じフレームを再度rootに呼び出すと 前回当該フレームに表れていたWIDGETが 前回のまま表示されるので)
132
132
 
133
- 先に伝えたようにm、動的にヒントテキストを生成したのは 良かったのですが、生成したヒントテキストの削除方法が分からず
134
133
 
134
+
135
+ 動的にヒントテキストを生成できたのは 良かったのですが、生成したヒントテキストの削除方法が分からず
136
+
135
- 同じフレームを 呼出すと 前回登場ヒントテキストが 残ってしまています。
137
+ 同じフレームを 呼出すと 前回登場させたヒントテキストが 残ってしまう問題が生じています。
136
138
 
137
139
 
138
140
 
139
- ラベルのWIDGETを流用した作りなのでしょうが、どういった名前で 作られているのか・どうすれば削除できるのかが分かりません。
141
+ ご紹介のクスは ラベルのWIDGETを流用した作りなのでしょうが、どういった名前で作られているのか・どうすれば削除できるのかが分かりません。( pack_forget() の利用と推察するも)
140
-
141
- ( pack_forget() の利用と推察するも)
142
142
 
143
143
 
144
144
 
145
145
  当該フレームに 自分が定義したラベルもあるので 無条件にラベルを消すこともできません。
146
146
 
147
- JQueryみたいに インデックス指定で せたりできますでしょうか?
147
+ JQueryみたいに インデックス指定で要素をすみないなことができますでしょうか?
148
148
 
149
149
 
150
150