Я использую kivy 1.10.1 с python 3.4.2 на моем raspberry pi 3, и графический интерфейс с некоторыми кнопками и надписями работает нормально.Теперь я хочу обновлять графический интерфейс каждую секунду, чтобы показать некоторые новые данные (обновить часы, получить некоторые значения из базы данных и т. Д.)
Проблема:
Когда я запускаю таймер, графический интерфейсстановится очень медленным.Я протестировал некоторые модификации кода, такие как отключение чтения данных, но без какого-либо эффекта.Каждый раз, когда вызывается таймер, графический интерфейс отстает на несколько миллисекунд.
Кто-нибудь знает, в чем причина?Я уверен, что аппаратное обеспечение моего Raspberry не является проблемой, потому что, когда я использую примеры KIVY (например, с некоторыми 3D-рендеринга), все работает без каких-либо задержек.
Детали Kivy:
[INFO ] [Kivy ] v1.10.1
[INFO ] [Python ] v3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Window ] Provider: egl_rpi
[INFO ] [GL ] Using the "OpenGL ES 2" graphics system
[INFO ] [GL ] Backend used <gl>
[INFO ] [GL ] OpenGL version <b'OpenGL ES 2.0'>
[INFO ] [GL ] OpenGL vendor <b'Broadcom'>
[INFO ] [GL ] OpenGL renderer <b'VideoCore IV HW'>
[INFO ] [GL ] OpenGL parsed version: 2, 0
[INFO ] [GL ] Shading version <b'OpenGL ES GLSL ES 1.00'>
[INFO ] [GL ] Texture max size <2048>
[INFO ] [GL ] Texture max units <8>
[INFO ] [Window ] virtual keyboard allowed, multiuser mode, not docked
[INFO ] [Text ] Provider: sdl2
[INFO ] [KivyMD ] KivyMD version: 0.1.2
Фрагмент кода:
# Start timer in a separated thread
def start_timer_gui(self):
try:
# Test connection
if s_conn.test_serial(self) == True:
th = threading.Thread(target=self.thread_timer_gui,
args=())
th.start()
...
# Start timer (is in a separated thread)
def thread_timer_gui(self):
Clock.schedule_interval(partial(self.thread_timer_gui_methods), 1)
@timeit
# Call functions for updating gui from separated thread
def thread_timer_gui_methods(self, dt=0):
self.update_gui()
#self.get_measured_vales()
def update_gui(self):
self.emcstatebar.lbl_local_time.text = "13-03-2019 07:32"
...
Я уже прочитал информацию с этой страницы https://kivy.org/doc/stable/guide/events.html, но она мне не помогла.
С уважением!