在更新任何小部件时,PyQt5的默认样式(在Mac上)似乎是错误的。
例如,一个非常简单的窗口:
import PyQt5.QtWidgets as qtw
class MainWindow(qtw.QWidget):
def __init__(self):
super().__init__()
self.setLayout(qtw.QVBoxLayout())
label1 = qtw.QLabel('Label')
button1 = qtw.QPushButton('Button', clicked = lambda: label1.setText('Button'))
self.layout().addWidget(label1)
self.layout().addWidget(button1)
self.show()
app = qtw.QApplication([])
mw = MainWindow()
app.exec_()
在此示例中,当我单击按钮时,label的文本有时仅被部分更新(因此上半部分已更改,但按钮的一半仍显示'label'),并且有时文本根本未更新。但是,一旦我调整窗口大小,视觉效果就会正确显示。
此外,当我添加以下行时:
app.setStyle(qtw.QStyleFactory.create('Fusion'))
创建mw对象后,要更改默认样式,不会出现此问题。实际上,当我将其更改为任何其他样式时,事情都会更新得很好。
这是一个错误还是我做错了什么?解决方法也将不胜感激!