実現したいこと
簡単にいうと、
1つのボタンを押したときに、
A,B、2つのイベントを同時ではなく、A→Bの順でおこないたいということです。
基本的な書き方がわかりません。
具体的にいうと、
AIで絵本「ウォーリーをさがせ」の中から
ウォーリーを自動検出してくれるコンテンツを作成中です。
GUIをKivyで実装しようとしていますが、
Kivy(+Pyhon)初心者にて、やり方がわかりません。
やりたいことは、
1,ボタンを押す。
2,ウインドウの「左側」に「ウォーリーをさがせ」のとあるページを表示する。
3,ついで物体検出アルゴリズム(tensorflow)でウォーリーを探す。
4,ウォーリーが見つかる。
5,ウォーリーを四角く囲んだ答えの画像をウインドウの「右側」に表示させる。
です。
3,4が少し時間がかかるため、
まず、2の答えがない状態の画像だけを「先」に表示させておいて、
みんなにウォーリーを探してもらいます。
その間に3,4の答え探しをAIにおこなわせて、
5の答えを「遅れて」表示させたいです。
しかしながら、
1のボタンを押すと、
3,4が終わってから2,5が「同時」に表示されてしまいます。
つまり、問題と答えが同時に表示されてしまいます。
画像の表示や物体検出といった1つ1つのイベントは
問題なくできています。
Kivyの基本的なところがわかっていないだけです。
やったこと
下に、コードの一部を書きますが、
buttonClicked_2()
で「問題」画像の表示(2)、
buttonClicked()
で「答え」画像の表示(3-5)
を実装しています。
まず、本体のpythonファイルです。
pythonファイル
1色々インポート、省略します。 2 3resource_add_path('./image') 4 5class ImageWidget(Widget): 6 source = StringProperty('./image/sample99.jpg') 7 source2 = StringProperty('./image/sample98.jpg') 8 source3 = StringProperty('./image/sample97.jpg') 9 source4 = StringProperty('./image/sample96.jpg') 10 11 def __init__(self, **kwargs): 12 super(ImageWidget, self).__init__(**kwargs) 13 pass 14 15 def buttonClicked_2(self): 16 self.source= './image/sample.jpg' 17 18 def buttonClicked(self): 19物体検出アルゴリズム、省略します。 20 #答えファイルの表示 21 self.source2= './image/Wally.jpg' 22 self.source3= './image/Wally.jpg' 23 self.source4= './image/Wally.jpg' 24 25 def buttonClicked2(self): 26 self.source = 'sample2.jpg' 27 28 def buttonClicked3(self): 29 self.source = 'sample3.jpg' 30 31 32class TestkApp(App): 33 def __init__(self, **kwargs): 34 super(TestkApp, self).__init__(**kwargs) 35 self.title = '画像表示' 36 37if __name__ == '__main__': 38 TestkApp().run()
下は、KVファイルです。
kvファイル
1ImageWidget: 2 3<Label>: 4 font_name: "HGRPP1.TTC" 5 6<ImageWidget>: 7 BoxLayout: 8 orientation: 'horizontal' 9 size: root.size 10 11 Image: 12 source: root.source 13 14 BoxLayout: 15 orientation: 'vertical' 16 size_hint_y: 1 17 size_hint_x: 0.4 18 19 Image: 20 source: root.source2 21 22 Image: 23 source: root.source3 24 25 Image: 26 source: root.source4 27 28 BoxLayout: 29 orientation: 'vertical' 30 size_hint_y: 1 31 size_hint_x: 0.1 32 padding: 20,30,20, 10 33 Button: 34 id: button1 35 text: "問題1" 36 font_size: 30 37 on_press: root.buttonClicked_2(), root.buttonClicked() 38 39以下省略
buttonClicked_2()が完了してから、
buttonClicked()をやってほしいのですが、
狙い通りに行きません。
2つを1つにしてもだめです。
単純な問題だと思います、
どなたかご教示してください。
よろしくお願いします。
補足情報
OS : windows10
CPU : Intel(R)Core(TM)i9-9900X CPU @ 3.50GHz
RAM : 128 GB
64bit OS
グラボ :ZOTAC GAMING GeForce RTX 2080 AMP Edition (2台)
anaconda環境で動かしています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/23 11:14
2019/09/23 12:40
2019/09/23 13:43
2019/09/24 03:25