Мой KIVY- GUI зависает случайно, и я не слишком уверен, почему. Я изменяю пару виджетов со стороны python (т. Е. Включаю флажки, изменяю текстовый ввод текста и т. Д.), Иногда из циклов (т.е. включаю 6 флажков один за другим). Я думаю, что замораживание происходит главным образом, когда я отключаю много виджетов одновременно, однако это также происходит, когда я изменяю только один виджет. Зайдя в окно оболочки и нажав CTRL + C, я снова могу разморозить GUI. Иногда GUI затем вылетает со следующей ошибкой:
[INFO ] [Base ] Leaving application in progress...
Traceback (most recent call last):
File "GUI_MELC.py", line 637, in <module>
GUI_MELC().run()
File "C:\Python37\lib\site-packages\kivy\app.py", line 855, in run
runTouchApp()
File "C:\Python37\lib\site-packages\kivy\base.py", line 504, in runTouchApp
EventLoop.window.mainloop()
File "C:\Python37\lib\site-packages\kivy\core\window\window_sdl2.py", line 747, in mainloop
self._mainloop()
File "C:\Python37\lib\site-packages\kivy\core\window\window_sdl2.py", line 479, in _mainloop
EventLoop.idle()
File "C:\Python37\lib\site-packages\kivy\base.py", line 339, in idle
Clock.tick()
File "C:\Python37\lib\site-packages\kivy\clock.py", line 563, in tick
current = self.idle()
File "C:\Python37\lib\site-packages\kivy\clock.py", line 543, in idle
usleep(1000000 * sleeptime)
File "C:\Python37\lib\site-packages\kivy\clock.py", line 727, in usleep
_usleep(microseconds, self._sleep_obj)
File "C:\Python37\lib\site-packages\kivy\clock.py", line 405, in _usleep
_kernel32.WaitForSingleObject(obj, 0xffffffff)
KeyboardInterrupt
Некоторые примеры кода, как я отключаю виджеты (это, вероятно, наиболее интенсивно по часам, если вы можете так его назвать):
guiElements = []
temp=['redAll', 'greenAll', 'blueAll']
guiElements.extend(temp)
for i in range(6):
temp1='red'+str(i)
temp2='gre'+str(i)
temp3='blu'+str(i)
temp4='red'+str(i)+'Val'
temp5='gre'+str(i)+'Val'
temp6='blu'+str(i)+'Val'
tempList=[temp1, temp2, temp3, temp4, temp5, temp6]
guiElements.extend(tempList)
def disableMainBoxGUI(self, status):
#self.getGUIElements()
for i in self.guiElements:
self.ids[i].disabled = status
Есть ли способ избежать замерзания GUI? Должен ли я добавить time.sleep (XX) или что-то?