質問編集履歴

3

報告

2021/10/21 06:40

投稿

saya24
saya24

スコア222

test CHANGED
File without changes
test CHANGED
@@ -451,3 +451,21 @@
451
451
  ```
452
452
 
453
453
  ![イメージ説明](53adce1a63d4dd4477c0695c29abf679.png)
454
+
455
+ ### 1021 1540 最終的にこうなり、満足!
456
+
457
+ ![イメージ説明](03f981332feea3b6cba871af5ec653ca.png)
458
+
459
+ ```python
460
+
461
+ frmIOMenu = tk.Frame(root, bg="red")
462
+
463
+
464
+
465
+ frmIOMenu.grid_rowconfigure([0, 1, 2, 3, 4, 5, 6, 7, 8], weight=1)
466
+
467
+ frmIOMenu.grid_columnconfigure([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], weight=1, minsize=40)
468
+
469
+ frmIOMenu.grid(row=0, column=0, sticky=tk.E + tk.W + tk.N + tk.S)
470
+
471
+ ```

2

誤記訂正

2021/10/21 06:40

投稿

saya24
saya24

スコア222

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ちゃんと座標形式で画面設計を前もって行い
2
2
 
3
- それにもとづい配置(GIRD)を行っているのですが 毎回毎回自分が意図したようにならず 本当に困っています。
3
+ それにもとづいてWidget配置(GRID)を行っているのですが 毎回毎回自分が意図したようにならず 本当に困っています。
4
4
 
5
5
 
6
6
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  なぜ意図した表示が行われないのか、どこを変更すれば 設計のように表示されるか? ご教示頂けますでしょうか?
10
10
 
11
- Tkinterで画面を作る都度、プログラム以前自分に何かの能力が欠落しているんじゃないかと 悩まされます。
11
+ TkInterで画面を作る都度、プログラム以前自分に何かの能力が欠落しているんじゃないかと 悩まされます。
12
12
 
13
13
 
14
14
 

1

追記

2021/10/21 01:34

投稿

saya24
saya24

スコア222

test CHANGED
File without changes
test CHANGED
@@ -18,9 +18,163 @@
18
18
 
19
19
  ![下記コードからの実行時画面](5ffd6dbf34802c3a5b0155a4046de6aa.png)
20
20
 
21
+
22
+
23
+ ### 1021 1016 提示コードを全体に差替え、下段に実行時のメニュー画像を追加
24
+
21
25
  ```Python
22
26
 
27
+ # tkinterのインポート
28
+
29
+ import tkinter as tk
30
+
31
+ import tkinter.ttk as ttk
32
+
33
+ import math
34
+
35
+ import os
36
+
37
+ from tkinter import filedialog
38
+
39
+ import tkinter.messagebox as tkmb
40
+
41
+ import openpyxl
42
+
43
+ #################################################################################
44
+
45
+ # #
46
+
47
+ # 一般関数 #
48
+
49
+ # #
50
+
51
+ # #
52
+
53
+ #################################################################################
54
+
55
+ # フレーム切替え=画面遷移
56
+
57
+ def change_frame(frame):
58
+
59
+ frame.tkraise()
60
+
61
+
62
+
63
+
64
+
65
+ #################################################################################
66
+
67
+ # #
68
+
69
+ # 画面生成 #
70
+
71
+ # #
72
+
73
+ # #
74
+
75
+ #################################################################################
76
+
77
+ def resource_path(relative_path):
78
+
79
+ try:
80
+
81
+ # PyInstaller creates a temp folder and stores path in _MEIPASS
82
+
83
+ base_path = sys._MEIPASS
84
+
85
+ except Exception:
86
+
87
+ base_path = os.path.abspath(".")
88
+
89
+
90
+
91
+ return os.path.join(base_path, relative_path)
92
+
93
+
94
+
95
+
96
+
97
+ def adjust_windowsize(root):
98
+
99
+ ww = root.winfo_screenwidth()
100
+
101
+ wh = root.winfo_screenheight()
102
+
103
+
104
+
105
+ lw = math.ceil(ww * 0.208)
106
+
107
+ lh = math.ceil(wh * 0.277)
108
+
109
+
110
+
111
+ root.geometry(str(lw)+"x"+str(lh)+"+"+str(int(ww/2-lw/2))+"+"+str(int(wh/2-lh/2)))
112
+
113
+ #################################################################################
114
+
115
+ # #
116
+
117
+ # フレーム生成 #
118
+
119
+ # #
120
+
121
+ # #
122
+
123
+ #################################################################################
124
+
125
+ def generate_frame(root):
126
+
127
+ #############################################################################
128
+
129
+ # #
130
+
131
+ # メインメニュー用フレーム設置 #
132
+
133
+ # #
134
+
135
+ #############################################################################
136
+
137
+ frmMain = ttk.Frame(root)
138
+
139
+ frmMain.grid(row=0, column=0, sticky=tk.E + tk.W + tk.N + tk.S)
140
+
141
+
142
+
23
- # 入出力定義メニュー用フレーム設
143
+ # メインメニューにボタン配
144
+
145
+ btn_SettingMenu = tk.Button(frmMain, text = "入出力定義", font=("",0,"normal","roman","normal"), command=lambda: change_frame(frmIOMenu))
146
+
147
+ btn_SettingMenu.pack(fill = tk.BOTH, expand=True)
148
+
149
+
150
+
151
+ btn_SettingMenu = tk.Button(frmMain, text = "変換定義", font=("",0,"normal","roman","normal"))
152
+
153
+ btn_SettingMenu.pack(fill = tk.BOTH, expand=True)
154
+
155
+
156
+
157
+ btn_RunMenu = tk.Button(frmMain, text = "実行メニュー", font=("",0,"normal","roman","normal"))
158
+
159
+ btn_RunMenu.pack(fill = tk.BOTH, expand=True)
160
+
161
+ btn_RunMenu.focus_set()
162
+
163
+
164
+
165
+ btn_SettingMenu = tk.Button(frmMain, text = "終了", font=("",0,"normal","roman","normal"), command=root.destroy)
166
+
167
+ btn_SettingMenu.pack(fill = tk.BOTH, expand=True)
168
+
169
+ #############################################################################
170
+
171
+ # #
172
+
173
+ # 入出力定義メニュー用フレーム設置 #
174
+
175
+ # #
176
+
177
+ #############################################################################
24
178
 
25
179
  frmIOMenu = ttk.Frame(root)
26
180
 
@@ -82,7 +236,7 @@
82
236
 
83
237
 
84
238
 
85
- btn_AssignInputFile = tk.Button(frmIOMenu, text = "入力ファイル指定", command=lambda : open_FileDialog_In(ent_InputPath, tree1, btn_AssignInputFile))
239
+ btn_AssignInputFile = tk.Button(frmIOMenu, text = "入力ファイル指定")
86
240
 
87
241
  btn_AssignInputFile.grid(row=1, column=0, columnspan=3, sticky=tk.E + tk.W + tk.N + tk.S)
88
242
 
@@ -96,7 +250,7 @@
96
250
 
97
251
 
98
252
 
99
- btn_AssignOutputFile = tk.Button(frmIOMenu, text = "出力ファイル指定", command=lambda : open_FileDialog_Out(ent_OutputPath, btn_AssignOutputFile))
253
+ btn_AssignOutputFile = tk.Button(frmIOMenu, text = "出力ファイル指定")
100
254
 
101
255
  btn_AssignOutputFile.grid(row=2, column=0, columnspan=3, sticky=tk.E + tk.W + tk.N + tk.S)
102
256
 
@@ -180,4 +334,120 @@
180
334
 
181
335
  btn_ReturnMenu.grid(row=8, column=8, columnspan=2, sticky=tk.E + tk.W + tk.N + tk.S)
182
336
 
337
+
338
+
339
+ # 起動時メインのフレームを前面に
340
+
341
+ frmMain.tkraise()
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+ if __name__ == "__main__":
352
+
353
+ # ウインドウの作成
354
+
355
+ root = tk.Tk()
356
+
357
+
358
+
359
+ #フォームサイズを実行端末から導き、ド真中に配置表示
360
+
361
+ adjust_windowsize(root)
362
+
363
+
364
+
365
+ #タイトルを指定
366
+
367
+ root.title("TkInterの勉強")
368
+
369
+
370
+
371
+ #フレーム切替え達成の上で とても重要、ルートのグリッド定義
372
+
373
+ root.grid_rowconfigure(0, weight=1)
374
+
375
+ root.grid_columnconfigure(0, weight=1)
376
+
377
+
378
+
379
+ root.grid_rowconfigure(1, weight=1)
380
+
381
+ root.grid_columnconfigure(1, weight=1)
382
+
383
+
384
+
385
+ root.grid_rowconfigure(2, weight=1)
386
+
387
+ root.grid_columnconfigure(2, weight=1)
388
+
389
+
390
+
391
+ root.grid_rowconfigure(3, weight=1)
392
+
393
+ root.grid_columnconfigure(3, weight=1)
394
+
395
+
396
+
397
+ root.grid_rowconfigure(4, weight=1)
398
+
399
+ root.grid_columnconfigure(4, weight=1)
400
+
401
+
402
+
403
+ root.grid_rowconfigure(5, weight=1)
404
+
405
+ root.grid_columnconfigure(5, weight=1)
406
+
407
+
408
+
409
+ root.grid_rowconfigure(6, weight=1)
410
+
411
+ root.grid_columnconfigure(6, weight=1)
412
+
413
+
414
+
415
+ root.grid_rowconfigure(7, weight=1)
416
+
417
+ root.grid_columnconfigure(7, weight=1)
418
+
419
+
420
+
421
+ root.grid_rowconfigure(8, weight=1)
422
+
423
+ root.grid_columnconfigure(8, weight=1)
424
+
425
+
426
+
427
+ root.grid_columnconfigure(9, weight=1)
428
+
429
+
430
+
431
+ #フォームの最大化、×ボタン操作を無効化
432
+
433
+ root.resizable(0,0)
434
+
435
+ root.protocol('WM_DELETE_WINDOW', (lambda: 'pass')())
436
+
437
+
438
+
439
+ # カーソル変更
440
+
441
+ root["cursor"] = "hand2"
442
+
443
+
444
+
445
+ generate_frame(root)
446
+
447
+
448
+
449
+ root.mainloop()
450
+
183
451
  ```
452
+
453
+ ![イメージ説明](53adce1a63d4dd4477c0695c29abf679.png)