TGViewer
Python RU Python RU @pro_python_code · 12.3K subscribers
Post #532 2.88K
При работе в Kivy с потоками (threading) вы должны иметь в виду, что все изменения в графическом интерфейсе должны делаться из главного потока. Да, и это не смотря даже на GIL! Дело в том, что контекст OpenGL очень не любит, когда его трогают из чужого потока, что приводит к случайным и иногда сложно уловимым визуальным глюкам (см. прикрепленное фото).

Как это сделать? Воспользоваться декоратором mainthread, который поставит при вызове оригинальной функции поставит ее выполнение в следующий тик главного цикла приложения в главном потоке.

Пример использования из Durak GUI. Метод self.on_found_peer вызывается из другого вспомогательного потока, но он меняет интерфейс, поэтому должен быть снабжен декоратором mainthread:

from kivy.clock import mainthread

class DurakFloatApp(App):
...
@mainthread
def on_found_peer(self, addr, peer_id):
print(f'Найден соперник {peer_id}@{addr}')
# делать что-то с GUI!

...
self.discovery = DiscoveryProtocol(self.my_pid, PORT_NO)
#
self.discovery.run_in_background(self.on_found_peer)
GitHub GitHub - tirinox/durakmq: LAN Durak Card Game LAN Durak Card Game. Contribute to tirinox/durakmq development by creating an account on GitHub.
  • 👍 7
More from @pro_python_code
  1. Oct 11, 2026Что нового в Python 3.15? Ленивые импорты, frozendict и JIT быстрее на 12% Python 3.15 выш…
  2. Oct 6, 2026🐍 Python умеет сравнивать числа как в математике Проверку диапазона можно записать короче…
  3. Oct 4, 2026Hugging Face исследовали multi-harness RL: обучение с подкреплением сразу через Claude Cod…
  4. Oct 1, 2026DeepSeek Harness вышел на десктоп: плагины без терминала и задачи по расписанию DeepSeek в…
  5. Sep 30, 2026Пишем игру на Python: неоновая аркада с разбором кода и ИИ Pygame часто считают библиотеко…
  6. Sep 29, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →