2016-07-10 15 views
3

Pythonの2.7スパイダーが正常に「Hello Worldの」Kivyアプリは一度だけ、つまり打つF5は、ウィンドウのアプリをもたらしますが、私はそれを閉じて、もう一度F5キーを打ったとき、それは次のエラーを言うの初期化された理由を誰もが知っています:Hello World Kiviアプリを一度初期化するPython Spyder?

[INFO    ] [Base  ] Start application main loop 
[ERROR    ] [Base  ] No event listeners have been created 
[ERROR    ] [Base  ] Application will leave 

ただし、Anacondasコマンドプロンプトで初期化してもエラーは発生しません。

ここで(ウェブサイトと同じ)コードは次のとおりです。

from kivy.app import App 
from kivy.uix.button import Button 

class TestApp(App): 
    def build(self): 
     return Button(text='Hello World') 

TestApp().run() 

if __name__ == '__main__': 
    TestApp().run() 
+0

[Python/Kivy Appを1回だけ実行する]の可能な複製(http://stackoverflow.com/questions/38042329/python-kivy-app-running-only-once) – KeyWeeUsr

答えて

4

実際にサンプルプログラムを使用すると、インタラクティブなUIは、このような簡単な方法で作成することができる方法を試してみるためだけの最小構成です。

そして、TestAppには、実際には、event listernersがcloseイベントを処理することを意味しませんでした。実際のプロジェクトを作成するときには、常にそれを考慮する必要があります。 Acuallyあなたは慎重にloggingを見れば、あなたはときに「再スタート」、あなたはTestAppを閉じるときにエラーがすでに起こっていることではないに気づくでしょう、あなたはTestApp

[INFO    ] [Base  ] Leaving application in progress... 
INFO:kivy:[Base  ] Leaving application in progress... 
[INFO    ] [Base  ] Start application main loop 
INFO:kivy:[Base  ] Start application main loop 
[ERROR    ] [Base  ] No event listeners have been created 
ERROR:kivy:[Base  ] No event listeners have been created 
[ERROR    ] [Base  ] Application will leave 
ERROR:kivy:[Base  ] Application will leave 

だからあなたの場合、1つの簡単な作業のためにつまり、、Consoleパネルでは、Execute in current Python or IPython consoleを選択する代わりに、Execute in a new dedicated Python consoleという2番目のオプションを選択するだけです。この場合、コードが完成した時点で、Pythonは現在のカーネルを閉じます。コードを実行するたびに、Spyderは自動的にこの特定のスクリプト用の新しい専用カーネルを作成します。