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

質問編集履歴

6

修正

2020/11/24 00:13

投稿

person
person

スコア224

title CHANGED
File without changes
body CHANGED
@@ -75,12 +75,13 @@
75
75
  ```
76
76
 
77
77
  # 追記
78
- ラズパイで最前面の閉じるボタンのみ効くように変更。
78
+ ラズパイで最前面ウィンドウ閉じる・最大化ボタンのみ効くように変更。
79
79
  ```Python
80
80
  import tkinter as tk
81
81
 
82
82
  def open_sub2_win(win, sub1_win):
83
83
  global win_flag, sub1_flag, sub2_flag
84
+ sub1_win.resizable(0, 0)
84
85
  win_flag = False
85
86
  sub1_flag = False
86
87
  sub2_flag = True
@@ -91,11 +92,11 @@
91
92
  sub2_win.transient(sub1_win)
92
93
  sub2_win.grab_set()
93
94
  sub2_win.focus_set()
94
- sub2_win.protocol("WM_DELETE_WINDOW", lambda:close_sub2_win(sub2_win))
95
+ sub2_win.protocol("WM_DELETE_WINDOW", lambda:close_sub2_win(sub1_win, sub2_win))
95
96
 
96
97
 
97
98
 
98
- def close_sub2_win(sub2_win):
99
+ def close_sub2_win(sub1_win, sub2_win):
99
100
  global win_flag, sub1_flag, sub2_flag
100
101
  if sub2_flag == True:
101
102
  sub2_win.grab_release()
@@ -103,10 +104,12 @@
103
104
  win_flag = False
104
105
  sub1_flag = True
105
106
  sub2_flag = False
107
+ sub1_win.resizable(1, 1)
106
108
 
107
109
 
108
110
  def open_sub1_win(win):
109
111
  global win_flag, sub1_flag, sub2_flag
112
+ win.resizable(0, 0)
110
113
  win_flag = False
111
114
  sub1_flag = True
112
115
  sub2_flag = False
@@ -117,13 +120,13 @@
117
120
  sub1_win.transient(win)
118
121
  sub1_win.grab_set()
119
122
  sub1_win.focus_set()
120
- sub1_win.protocol("WM_DELETE_WINDOW", lambda:close_sub1_win(sub1_win))
123
+ sub1_win.protocol("WM_DELETE_WINDOW", lambda:close_sub1_win(win, sub1_win))
121
124
  btn = tk.Button(sub1_win, text="open_sub2_win", command=lambda:open_sub2_win(win, sub1_win))
122
125
  btn.grid()
123
126
 
124
127
 
125
128
 
126
- def close_sub1_win(sub1_win):
129
+ def close_sub1_win(win, sub1_win):
127
130
  global win_flag, sub1_flag, sub2_flag
128
131
  if sub1_flag == True:
129
132
  sub1_win.grab_release()
@@ -131,6 +134,7 @@
131
134
  win_flag = True
132
135
  sub1_flag = False
133
136
  sub2_flag = False
137
+ win.resizable(1, 1)
134
138
 
135
139
  def close_win(win):
136
140
  global win_flag, sub1_flag, sub2_flag
@@ -150,4 +154,5 @@
150
154
 
151
155
  win.protocol("WM_DELETE_WINDOW", lambda:close_win(win))
152
156
  win.mainloop()
157
+
153
158
  ```

5

追加

2020/11/24 00:13

投稿

person
person

スコア224

title CHANGED
File without changes
body CHANGED
@@ -72,4 +72,82 @@
72
72
  btn.grid()
73
73
 
74
74
  win.mainloop()
75
+ ```
76
+
77
+ # 追記
78
+ ラズパイでも最前面の閉じるボタンのみ効くように変更。
79
+ ```Python
80
+ import tkinter as tk
81
+
82
+ def open_sub2_win(win, sub1_win):
83
+ global win_flag, sub1_flag, sub2_flag
84
+ win_flag = False
85
+ sub1_flag = False
86
+ sub2_flag = True
87
+
88
+ sub2_win = tk.Toplevel()
89
+ sub2_win.title("sub2_win")
90
+ sub2_win.geometry("300x300+200+200")
91
+ sub2_win.transient(sub1_win)
92
+ sub2_win.grab_set()
93
+ sub2_win.focus_set()
94
+ sub2_win.protocol("WM_DELETE_WINDOW", lambda:close_sub2_win(sub2_win))
95
+
96
+
97
+
98
+ def close_sub2_win(sub2_win):
99
+ global win_flag, sub1_flag, sub2_flag
100
+ if sub2_flag == True:
101
+ sub2_win.grab_release()
102
+ sub2_win.destroy()
103
+ win_flag = False
104
+ sub1_flag = True
105
+ sub2_flag = False
106
+
107
+
108
+ def open_sub1_win(win):
109
+ global win_flag, sub1_flag, sub2_flag
110
+ win_flag = False
111
+ sub1_flag = True
112
+ sub2_flag = False
113
+
114
+ sub1_win = tk.Toplevel()
115
+ sub1_win.title("sub1_win")
116
+ sub1_win.geometry("300x300+100+100")
117
+ sub1_win.transient(win)
118
+ sub1_win.grab_set()
119
+ sub1_win.focus_set()
120
+ sub1_win.protocol("WM_DELETE_WINDOW", lambda:close_sub1_win(sub1_win))
121
+ btn = tk.Button(sub1_win, text="open_sub2_win", command=lambda:open_sub2_win(win, sub1_win))
122
+ btn.grid()
123
+
124
+
125
+
126
+ def close_sub1_win(sub1_win):
127
+ global win_flag, sub1_flag, sub2_flag
128
+ if sub1_flag == True:
129
+ sub1_win.grab_release()
130
+ sub1_win.destroy()
131
+ win_flag = True
132
+ sub1_flag = False
133
+ sub2_flag = False
134
+
135
+ def close_win(win):
136
+ global win_flag, sub1_flag, sub2_flag
137
+ if win_flag == True:
138
+ win.destroy()
139
+
140
+ win_flag = True
141
+ sub1_flag = False
142
+ sub2_flag = False
143
+
144
+ win = tk.Tk()
145
+ win.title("win")
146
+ win.geometry("300x300+0+0")
147
+
148
+ btn = tk.Button(win, text="open_sub1_win", command=lambda:open_sub1_win(win))
149
+ btn.grid()
150
+
151
+ win.protocol("WM_DELETE_WINDOW", lambda:close_win(win))
152
+ win.mainloop()
75
153
  ```

4

追記

2020/11/24 00:01

投稿

person
person

スコア224

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 実現したいこと
1
+ # 実現したいこと
2
2
 
3
3
  Python実行時にウィンドウにあるボタンを押すと、ポップアップウィンドウが最前面に1つ表示される。
4
4
  ポップアップが開いている間は、後ろのウィンドウを操作できなくする

3

追記

2020/11/20 09:40

投稿

person
person

スコア224

title CHANGED
File without changes
body CHANGED
@@ -31,8 +31,8 @@
31
31
  Windowsのような挙動が理想ですが、Raspberry Piで同じ挙動を実現させるための対処方法はありますか。
32
32
 
33
33
 
34
+ # ソースコード
34
35
 
35
-
36
36
  ```Python
37
37
  import tkinter as tk
38
38
 

2

修正

2020/11/20 09:39

投稿

person
person

スコア224

title CHANGED
File without changes
body CHANGED
@@ -25,12 +25,14 @@
25
25
 
26
26
  (ここでいうアクティブとは、添付画像のようにウィンドウが選択状態であることです。タイトルバーが青くなっている部分です。)
27
27
 
28
+ ![イメージ説明](0299b5055a01609c1f61191de005c8a1.png)
29
+
28
30
  # 質問
29
31
  Windowsのような挙動が理想ですが、Raspberry Piで同じ挙動を実現させるための対処方法はありますか。
30
32
 
31
- ![イメージ説明](0299b5055a01609c1f61191de005c8a1.png)
32
33
 
33
34
 
35
+
34
36
  ```Python
35
37
  import tkinter as tk
36
38
 

1

追加

2020/11/20 02:16

投稿

person
person

スコア224

title CHANGED
File without changes
body CHANGED
@@ -28,7 +28,9 @@
28
28
  # 質問
29
29
  Windowsのような挙動が理想ですが、Raspberry Piで同じ挙動を実現させるための対処方法はありますか。
30
30
 
31
+ ![イメージ説明](0299b5055a01609c1f61191de005c8a1.png)
31
32
 
33
+
32
34
  ```Python
33
35
  import tkinter as tk
34
36