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

質問編集履歴

2

自身で模索した内容を追記。

2021/06/03 17:14

投稿

Lups20
Lups20

スコア2

title CHANGED
File without changes
body CHANGED
@@ -20,7 +20,7 @@
20
20
  #読み込みが終わったら待機ウィンドウを閉じたい。
21
21
  ```
22
22
 
23
- そして、ウィンドウの表示自体は
23
+ ウィンドウの表示自体は
24
24
 
25
25
  ```
26
26
  if __name__ == '__main__':
@@ -29,14 +29,40 @@
29
29
  frame.Show()
30
30
  app.MainLoop()
31
31
  ```
32
- などで表示できるのは分かるのですが、当然ながらこれをデータ読み込み前に書いてしまうとMainLoopが閉じるまで処理が進みません。
32
+ などでできるのは分かるのですが、当然ながらこれをデータ読み込み前に書いてしまうとMainLoopが閉じるまで処理が進みません。
33
33
  Messsageウィンドウでも同様で、OKボタンを押すまで結局先に進まないため、バックグラウンドで処理が進みません。。
34
34
 
35
35
  何かのソフトを立ち上げる際に、待機ウィンドウがぽっと出てきて終わったら本ウィンドウが立ち上がる。というソフトを良く見かけるため、不可能ではないとは思うのですが、なかなか似たような疑問や方法を見つけられず躓いております。
36
36
 
37
+ ###自身で試したコード
38
+ ```
39
+ import wx
40
+ from time import sleep
37
41
 
42
+ app = wx.App()
43
+ frame = wx.Frame(None, wx.ID_ANY, 'Test', size=(300, 200))
44
+ frame.Show()
45
+
46
+ #####エクセルデータ読み込み#####
47
+ E1=pd.read_excel('E1.xlsx')
48
+ E2=pd.read_excel('E2.xlsx')
49
+
50
+ frame.Close()
51
+ frame.Destroy()
52
+ app.Destroy()
53
+
54
+ print('wait')
55
+ sleep(5)
56
+
57
+ ```
58
+
59
+ この場合、ウィンドウを起動直後に立ち上げることはできますが、閉じることはできません。
60
+ app.MainLoop()を記入しないと、Close()が機能しないのか閉じられません。
61
+ sleepで5秒経ってプログラム自体が終了すれば当然ウィンドウごとプログラムは閉じられますが、それでは意味がなく…プログラムが起動している状態でウィンドウの表示と処理完了後に閉じる操作をするにはどうするのが良いのでしょうか。
62
+
63
+
38
64
  ##まとめ
39
- main.pyを実行した直後に「読み込み中」のウィンドウを表示させ、読み込みが終わったらそのウィンドウを閉じる。
65
+ main.pyを実行した直後に「読み込み中」のウィンドウを表示させ、読み込みが終わったらそのウィンドウを閉じる。(プログラムは稼働継続)
40
66
  ということがやりたいことになります。
41
67
 
42
68
 

1

「複数ウィンドウで表現できるのかもしれないが…」という表現が、複数ウィンドウでやりたいという誤解を招いてしまったため削除いたしました。

2021/06/03 17:14

投稿

Lups20
Lups20

スコア2

title CHANGED
File without changes
body CHANGED
@@ -32,12 +32,14 @@
32
32
  などで表示できるのは分かるのですが、当然ながらこれをデータ読み込み前に書いてしまうとMainLoopが閉じるまで処理が進みません。
33
33
  Messsageウィンドウでも同様で、OKボタンを押すまで結局先に進まないため、バックグラウンドで処理が進みません。。
34
34
 
35
+ 何かのソフトを立ち上げる際に、待機ウィンドウがぽっと出てきて終わったら本ウィンドウが立ち上がる。というソフトを良く見かけるため、不可能ではないとは思うのですが、なかなか似たような疑問や方法を見つけられず躓いております。
35
36
 
36
- ### 考えたこと
37
- MainLoop()とデータ読み込みを同じmainに入れるのではなく、Mainloop()でウィンドウを開いた際に、「読み込み中」を表示する子ウィンドウを発生させて、その後データを読み込んで終わったら子ウィンドウを閉じる。という方法も考えましたが、
38
- 何かのソフトを立ち上げる際に、待機ウィンドウがぽっと出てきて終わったら本ウィンドウが立ち上がる。というソフトを良く見かけるため、わざわざこのようなことをする必要はないのではないか。と思っていますが、その方法が見つからず躓いております。
39
37
 
38
+ ##まとめ
39
+ main.pyを実行した直後に「読み込み中」のウィンドウを表示させ、読み込みが終わったらそのウィンドウを閉じる。
40
+ ということがやりたいことになります。
40
41
 
42
+
41
43
  ### 補足
42
44
 
43
45
  Anacondaで構築しています。