Kivy нарисованные элементы «исчезают» (или возможные проблемы с порядком визуализации) - PullRequest
2 голосов
/ 11 марта 2019

(это репост из https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/kivy-users/0B5GYWkTIwE/-OQYp_ykCQAJ)

Очень редко наш пользовательский интерфейс на основе kivy очень странно глючит: система остается отзывчивой, а кнопки и текст работают, но кажется, что все "нарисованные элементы исчезают, то есть элементы из kivy.graphics.

Вот главный экран управления в его правильном состоянии: Correct operation

и когда он идет не так, как надоизменяется на:

Broken render

Все элементы, отображаемые с объектами 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с случайных нажатий на виджеты) - есть какой-то программный метод, который можно попробоватьвызвать проблему?
  • какую отладку я могу установить, чтобы попытаться выяснить, что может происходить?

Спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...