(это репост из https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/kivy-users/0B5GYWkTIwE/-OQYp_ykCQAJ)
Очень редко наш пользовательский интерфейс на основе kivy очень странно глючит: система остается отзывчивой, а кнопки и текст работают, но кажется, что все "нарисованные элементы исчезают, то есть элементы из kivy.graphics.
Вот главный экран управления в его правильном состоянии: ![Correct operation](https://i.stack.imgur.com/Jv3bW.png)
и когда он идет не так, как надоизменяется на:
![Broken render](https://i.stack.imgur.com/acJGL.jpg)
Все элементы, отображаемые с объектами kivy.graphics, исчезли!
Это использует 1.9.1-1build3 (в Ubuntu) и 1.9.1-dev (из kivypie на RPi)
Кто-нибудь знает, что может быть причиной этого или как его отследить?, но это так редко, что до сих пор было невозможно найти какую-либо общность, и в stdout / stderr или в .kivy / log /
не выводится отчет об ошибках. Вот фрагмент кода, показывающий, как рисуются элементы:
class LineWidget(GUIWidget):
"""A line widget. A simple sequence of points"""
def __init__(self, points, width, **kwargs):
GUIWidget.__init__(self, **kwargs)
self.points = points
with self.canvas:
self.line_color = theme.system.line.Color()
self.line = Line(width=width)
self.bind(size=self.update_rect, pos=self.update_rect)
def update_rect(self, instance, value):
"""Update the point positions."""
self.pos = instance.pos
if self.points:
self.line.points = self.get_points(self.points)
def set_color(self, color):
"""Change the color"""
self.line_color.rgb = color
и отображается синий / серый фон:
with self.canvas.before:
if background_color is None:
background_color = theme.primary.black
self._background_color = Color(*background_color)
self._background_rectangle = Rectangle(size=self.size, pos=self.pos)
- В моем посте к группе kivy было высказано предположение, что, возможно, произошло какое-то состояние расы, в результате которого нативные объекты kivy были визуализированы поверх шахты, и попытался использовать canvas.after, но если я не смогу найти способ спровоцировать проблему, я никогда не узнаю, сработало ли это.
- Возможно ли, что порядок рендеринга (Z-index) изменился?
- возможно, есть какое-то состояние гонки?
- Проблема возникает так редко, что до сих пор было невозможно спровоцировать проблему (единственный случай - 100с случайных нажатий на виджеты) - есть какой-то программный метод, который можно попробоватьвызвать проблему?
- какую отладку я могу установить, чтобы попытаться выяснить, что может происходить?
Спасибо,