Указатель мыши MacOS мигает сигналами и мигающий курсор QLineEdit - PullRequest
2 голосов
/ 14 мая 2019

Я занимаюсь разработкой небольшого медиаплеера с использованием PyQt5 на MacOS Mojave.Каждый раз, когда мышь наводит курсор на виджет, в котором указатель мыши меняет форму, указатель мыши начинает мигать (мигать?), Изменяя форму между обычным указателем мыши и альтернативным указателем мыши.

Например, еслиЯ создаю виджет QLineEdit, указатель мыши меняется на I-Beam в качестве альтернативного указателя при наведении курсора на виджет.Обычно этот указатель мыши просто меняет форму, пока я нахожусь над виджетом.Однако в нижеприведенном тестовом приложении указатель мыши постоянно меняет форму между указателем I-Beam и обычным указателем мыши со стрелкой, изменяясь вперед и назад с той же скоростью, что и курсор положения ввода в виджете.

Здесьзапись экрана, показывающая проблемуОбратите внимание, как указатель мыши меняет форму между стрелкой и двутавровой балкой, когда курсор ввода текста мигает, когда я набираю текст и когда я выбираю текст.

Mouse Flicker Screen Recording

Пример кода, показывающий это поведение в моей системе:

import sys
from PyQt5               import QtWidgets
from PyQt5               import QtCore


class MainWindow(QtWidgets.QMainWindow):
    sig = QtCore.pyqtSignal()
    def __init__(self):
        super().__init__()
        self.resize(400,400)
        self.cw = QtWidgets.QWidget(self)
        self.setCentralWidget(self.cw)
        self.l = QtWidgets.QVBoxLayout(self.cw)
        self.le = QtWidgets.QLineEdit(self.cw)
        self.l.addWidget(self.le)
        self.label = QtWidgets.QLabel()
        self.l.addWidget(self.label)
        self.show()

app=QtWidgets.QApplication([sys.argv])
w=MainWindow()
app.setActiveWindow(w)
exit_code = app.exec_()

sys.exit(exit_code)

В приведенном выше коде я могу решить эту проблему, отключив вспышку курсора редактирования строки, используя app.setCursorFlashTime(0).Тем не менее, это не решает проблему в моем приложении.В моем приложении сигналы в других виджетах также будут вызывать такое же изменение формы (мигание) указателя мыши.

Информация о версии:
MacOS Мохаве 10.14.5
PyQt5 5.12.2
Python 3.7.3

В прошлом я разработал приложения QtApplication и никогда не наблюдал такого поведения, и я не знаю, почему это происходит.

У кого-нибудь есть решение для этого крайне раздражающего поведения?

РЕДАКТИРОВАТЬ: для ясности измените «курсор мыши» на «указатель мыши».РЕДАКТИРОВАТЬ: Обновлено до MacOS 10.14.5 и проблема по-прежнему существует.РЕДАКТИРОВАТЬ: добавить запись экрана, чтобы сделать проблему более ясной.

1 Ответ

0 голосов
/ 15 мая 2019

Отвечая на мой собственный вопрос:

Это ошибка в Qt:

https://bugreports.qt.io/browse/QTBUG-75552

Похоже, это ошибка в 5.12.2 и 5.12.3Установка 5.12.1 исправила указатель мыши, и я предполагаю, что 5.12.4 также будет исправлено.

...