我想設置字體QTextEdit
與QTreeWidget
相同。爲QTextEdit設置字體被忽略,沒有明顯的原因
當我從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_())
良好的洞察力。謝謝。 – Fenikso 2014-10-31 09:00:30