<p><strong>更新</strong>:</p>
<p>这似乎是由只影响macOS的bug引起的:请参见<a href="https://bugreports.qt.io/browse/QTBUG-6071" rel="nofollow noreferrer">QTBUG-6071</a>和<a href="https://bugreports.qt.io/browse/QTBUG-69878" rel="nofollow noreferrer">QTBUG-69878</a>。这应该已经在Qt-5.12中修复了,所以您需要确保安装了Qt5和PyQt5的最新版本,才能解决这个问题。在</p>
<hr/>
<p>下面是一个测试脚本,其中包含我在Linux上使用Qt-5.12.0和PyQt-5.11.3得到的输出的一些屏幕截图。正如你所看到的,一切都按预期进行。如果您得到了不同的行为,您应该<a href="https://stackoverflow.com/posts/54492063/edit">edit your question</a>并说明您正在使用的Qt和PyQt的确切版本,在哪个平台上进行测试,并显示测试脚本的一些示例输出。在</p>
<p><strong>测试脚本</strong>:</p>
<pre><code>import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Window(QtWidgets.QWidget):
def __init__(self):
super(Window, self).__init__()
self.button = QtWidgets.QPushButton('Change Font')
self.button.clicked.connect(self.updateLabel)
self.label = QtWidgets.QLabel()
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.label)
layout.addWidget(self.button)
self.updateLabel()
def updateLabel(self):
if self.label.text():
new = QtWidgets.QFontDialog.getFont()[0]
else:
new = QtGui.QFont(self.label.font())
before = self.label.font()
self.label.setFont(new)
after = self.label.font()
text = []
for font in before, after:
info = QtGui.QFontInfo(font)
text.append('BEFORE:' if font is before else 'AFTER:')
text.append(' string: %s' % font.toString())
text.append(' family: %s' % info.family())
text.append(' size: %s' % info.pointSize())
text.append('')
text = '\n'.join(text)
self.label.setText(text)
print(text)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.setGeometry(800, 100, 500, 100)
window.show()
sys.exit(app.exec_())
</code></pre>
<p><strong>输出</strong>:</p>
<p><a href="https://i.stack.imgur.com/XPBkM.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/XPBkM.png" alt="enter image description here"/></a>
<a href="https://i.stack.imgur.com/QQmYO.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/QQmYO.png" alt="enter image description here"/></a>
<a href="https://i.stack.imgur.com/jthet.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/jthet.png" alt="enter image description here"/></a></p>