ボタンを押すとあるプログラムが起動し、そのプログラムの停止、および他の動作をKivyのGUI上で行う実装を目指しています。
ボタン押した際にmultiprocessによるプロセスが実行されるようにした下記の物を実行したところmultiprocessのプロセスが動いている間に最初に表示されたkivyの画面とは別に白い画面(応答なしのような状態で操作できない)が表示されます。
この白い画面が表示されないようにする方法はないでしょうか。
またmultiprocess以外を用いる実装の方法があればご教示願いたいです。
python
1from kivy.app import App 2from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition 3from kivy.core.text import LabelBase, DEFAULT_FONT 4import time 5from datetime import datetime 6import multiprocessing as mp 7from multiprocessing import Process, Queue, freeze_support 8 9LabelBase.register(DEFAULT_FONT, "ipaexg.ttf") 10sm = ScreenManager(transition=NoTransition()) 11 12def count_time(x): 13 for i in range(x): 14 print('現在のカウントは{}'.format(i)) 15 time.sleep(1) 16 17class Test(App): 18 19 def build(self): 20 sm.add_widget(TestScreen(name='test')) 21 return sm 22 23class TestScreen(Screen): 24 25 p1 = mp.Process(target=count_time, args=(10, )) 26 27 def on_enter(self): 28 pass 29 30 def start_mp(self): 31 self.p1 = mp.Process(target=count_time, args=(10, )) 32 self.p1.start() 33 print("end") 34 35 def stop_time(self): 36 self.p1.terminate() 37 print(datetime.now()) 38 39if __name__ == '__main__': 40 Test().run()
test.kv
test
1<TestScreen>: 2 BoxLayout: 3 orientation: "vertical" # place object vertically 4 Label: 5 size_hint: 1, 1 6 text: 'TITLE' 7 font_size: 150 8 color: 1, 1, 1, 1 9 Button: 10 text: 'start' 11 on_press: root.start_mp() 12 Button: 13 text: 'stop' 14 on_press: root.stop_time() 15
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/28 08:24
2018/12/28 11:04
2018/12/28 11:51
2018/12/28 12:00
2018/12/28 13:15 編集
2018/12/28 16:08
2018/12/28 16:15