【发布时间】:2014-10-30 14:57:40
【问题描述】:
我正在尝试将QTextEdit 的字体设置为与QTreeWidget 相同。
当我从QTextEdit 获取字体并尝试将其设置为QTreeWidget 时,它不起作用。但是,如果我创建一个新字体QFont("Segoe UI", 9),它恰好与我的平台(Windows 7)上的QTreeWidget 相同,并将其设置为QTextEdit,它就可以工作。
以下代码打印True 以进行字体比较,但不能按预期工作。取消注释 self.text.setFont(new_font) 可以修复它。为什么?
import string
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont
TEXT = string.printable[:-5]
def print_font(font):
print("Family: {}, Size: {}".format(font.family(), font.pointSize()))
class Window(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.list = QTreeWidget(self)
self.list.addTopLevelItem(QTreeWidgetItem((TEXT,)))
self.list.setRootIsDecorated(False)
self.list.setHeaderHidden(True)
self.list.setMinimumHeight(25)
self.text = QTextEdit(self)
self.text.setText(TEXT)
self.text.setMinimumHeight(25)
self.layout = QGridLayout()
self.layout.setContentsMargins(5, 5, 5, 5)
self.layout.addWidget(self.list)
self.layout.addWidget(self.text)
self.resize(620, 20)
self.setLayout(self.layout)
self.show()
list_font = self.list.font()
new_font = QFont("Segoe UI", 9)
print(list_font == new_font)
self.text.setFont(list_font)
# self.text.setFont(new_font)
print_font(self.list.font())
print_font(self.text.font())
app = QApplication(sys.argv)
win = Window()
sys.exit(app.exec_())
【问题讨论】: