我正在使用PyQt5在MacOS Mojave上开发一个小型媒体播放器应用程序。每当鼠标在鼠标指针改变形状的小部件上盘旋时,鼠标指针就开始闪烁(flash?),在普通鼠标指针和备用鼠标指针之间更改形状。
例如,如果我创建了一个QLineEdit小部件,当鼠标指针在小部件上盘旋时,鼠标指针就会更改为一个i束作为备用指针。通常,只要我在小部件上盘旋,鼠标指针就会改变形状。但是,在下面的测试应用程序中,鼠标指针不断地改变I-束指针和普通箭头鼠标指针之间的形状,以与小部件中的输入位置光标相同的速度来回变化。
这是一个显示问题的屏幕记录。请注意鼠标指针如何改变箭头之间的形状,i-束作为文本输入光标闪烁,当我键入和我选择文本。
在我的系统上显示此行为的示例代码:
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 Mojave 10.14.5
PyQt5 5.12.2
Python 3.7.3
我在过去开发过QtApplications,从来没有观察过这种行为,也不知道为什么会发生这种情况。
有谁有办法解决这种非常令人恼火的行为?
编辑:为清晰起见,将“鼠标光标”更改为“鼠标指针”。编辑:更新为MacOS 10.14.5,问题仍然存在。编辑:添加屏幕记录,以使问题更加清楚。
发布于 2019-05-15 16:44:52
回答我自己的问题:
这是Qt中的一个bug:
https://bugreports.qt.io/browse/QTBUG-75552
这似乎是5.12.2和5.12.3中的一个bug,安装5.12.1修复了鼠标指针,我认为5.12.4也将被修复。
https://stackoverflow.com/questions/56129711
复制相似问题