Приложение Kivy не будет запускаться дважды из-за ArgumentError - PullRequest
1 голос
/ 26 июня 2019

Я новичок в пакете графического интерфейса пользователя kivy и хотел научиться создавать игры, следуя «Руководству по игре в понг» на официальном сайте. Я ввел основной код, чтобы открыть окно графического интерфейса, которое работало просто отлично. Однако когда я закрываю это окно и снова запускаю тот же код, я получаю ArgumentError. Я использую последнюю версию Spyder в качестве IDE и обновил все пакеты.

Единственное, что может обойти эту проблему, это перезапустить Spyder. Я что-то не так делаю в исполнении?

Код должен открывать новое окно каждый раз, когда он выполняется. Однако после первого запуска я получаю вывод этой консоли, который заканчивается ArgumentError.

Код:

from kivy.app import App
from kivy.uix.widget import Widget


class PongGame(Widget):
    pass


class PongApp(App):
    def build(self):
        return PongGame()


if __name__ == '__main__':
    PongApp().run()

Консольный вывод

[INFO   ] [Base        ] Start application main loop
[ERROR  ] [Base        ] No event listeners have been created
[ERROR  ] [Base        ] Application will leave
[INFO   ] [Base        ] Leaving application in progress...
[INFO   ] [Base        ] Leaving application in progress...
Traceback (most recent call last):

  File "<ipython-input-2-30ebdb31c7db>", line 17, in <module>
    PongApp().run()

  File "C:\Users\almig\Anaconda3\lib\site-packages\kivy\app.py", line 855, in run
    runTouchApp()

  File "C:\Users\almig\Anaconda3\lib\site-packages\kivy\base.py", line 506, in runTouchApp
    stopTouchApp()

  File "C:\Users\almig\Anaconda3\lib\site-packages\kivy\base.py", line 521, in stopTouchApp
    EventLoop.close()

  File "C:\Users\almig\Anaconda3\lib\site-packages\kivy\base.py", line 172, in close
    self.stop()

  File "C:\Users\almig\Anaconda3\lib\site-packages\kivy\base.py", line 184, in stop
    provider.stop()

  File "C:\Users\almig\Anaconda3\lib\site-packages\kivy\input\providers\wm_pen.py", line 111, in stop
    SetWindowLong_WndProc_wrapper(self.hwnd, self.old_windProc)

  File "C:\Users\almig\Anaconda3\lib\site-packages\kivy\input\providers\wm_common.py", line 122, in _closure
    oldAddr = func(hWnd, GWL_WNDPROC, cast(wndProc, c_void_p).value)

ArgumentError: argument 3: <class 'TypeError'>: wrong type
...