Python 如何定制QTreeWidget头';s字体
使用: 创建了QTreeWidget。它的列标题是给定的名称。设置标题和水平尺寸 现在我想自定义标题的字体大小Python 如何定制QTreeWidget头';s字体,python,pyqt,Python,Pyqt,使用: 创建了QTreeWidget。它的列标题是给定的名称。设置标题和水平尺寸 现在我想自定义标题的字体大小 tree=QtGui.QTreeWidget() tree.setHeaderLabels(['Column 1','Column 2','Column 3']) tree.setColumnWidth(0, 48) tree.setColumnWidth(1, 48) tree.setColumnWidth(2, 48) 但是像这样的语法中使用的.setFont对标题中
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['Column 1','Column 2','Column 3'])
tree.setColumnWidth(0, 48)
tree.setColumnWidth(1, 48)
tree.setColumnWidth(2, 48)
但是像这样的语法中使用的.setFont
对标题中使用的字体大小没有任何可见的影响
我也试过:
font = QtGui.QFont()
font.setPointSize(8)
tree.headerItem().setFont(0, font)
没有成功。使用什么方法自定义QTreeWidget列标题中使用的字体大小
稍后编辑:
示例1使列标题变大,但不影响字体大小(?!):
示例2再次尝试使用QSS=不影响字体大小:
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['One','Two','Tree','Four','Five'])
font=QtGui.QFont()
font.setPointSize(24)
tree.header().setFont(font)
tree.show()
sys.exit(app.exec_())
示例3使用setHeaderItem。没有成功:
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['One','Two','Tree','Four','Five'])
tree.header().setStyleSheet('font: bold 24px; font-size: 32pt; font-family: Courier;')
tree.setStyleSheet('font: bold 24px; font-size: 32pt; font-family: Courier;')
tree.show()
sys.exit(app.exec_())
示例5通过主窗口:
编辑#2
我刚刚在另一台机器(OSX)上运行了这些示例代码。令我惊讶的是,代码运行正常,标题字体设置正确。有趣的是,它在一台Mac上工作而在另一台上不工作的原因是什么?这可能是一个sip
问题吗?Qt版本?PyQt版本?以下是截图:
假设您希望整个页眉的字体相同,您应该能够执行以下操作:
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
mainWindow=QtGui.QMainWindow()
mainWidget=QtGui.QWidget()
mainWindow.setCentralWidget(mainWidget)
mainLayout = QtGui.QVBoxLayout()
mainWidget.setLayout(mainLayout)
mainWindow.setStyleSheet('QWidget { font: bold italic large "Times New Roman" }')
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['One','Two','Tree','Four','Five'])
mainLayout.addWidget(tree)
mainWindow.show()
sys.exit(app.exec_())
可能只需使用QS即可:
QTreeWidget
列标题字体绝对可调。
对于那些从遥远的反乌托邦未来来到这里的人来说,最明智的方法是在与应用程序的QMainWindow
小部件相关联的样式表中设置QHeaderView::section
选择器的样式。这种方法合理地将所有样式集中到一个样式表中,并允许在Qt(Creator | Designer)中即时预览这些样式
…呜呜?
具体来说,假设Qt(创建者|设计者):
- 右键单击应用程序对象树视图中的
小部件QMainWindow
- 左键单击更改样式表。。。菜单项
- 复制并粘贴以下QS:
tree.header().setFont(font)
- 单击“确定”
QTreeWidget
父选择器在技术上是可选的,但允许对单个树小部件而不是所有树小部件进行样式设置(例如,QTreeWidget#muh_小部件QHeaderView::section
,为具有对象名muh_小部件的单个树小部件设置列标题样式)
告诉我更多,好先生!
很高兴,善良的绅士。另见:
- 这个
- 这个
我也尝试了tree.header().setFont(font)
。不起作用。有趣的是,它在我的系统上起作用。您使用的是什么版本的Qt?什么操作系统?平台:OSX。QtCore.PYQT_VERSION_STR:VERSION:4.10.4-snapshot-315a27c0f0a7Oh,我在Windows 7上,所以我无法真正看到您看到的内容。另外,我相信您已经尝试过了,但是您是否尝试过将点大小设置为非常大的值,例如20?在我的设置中,8看起来与默认大小大致相同。(如果这是一个愚蠢的建议,很抱歉。我想排除所有的可能性。)我刚刚发布了三个例子。它们都不起作用。我在互联网上搜索答案已经到了尽头。标题的字体可能不可自定义。您可以发布一个如何使用QSS更改标题字体属性的示例吗?请尝试QWidget{font:bold italic large“Times New Roman”}-验证这是否会更改标题字体。如果有,那么您只需要找到正确的小部件名称。我记得有人在寻找一些Qt小部件,因为它们没有您期望的名称。您还可以使用obj.setName(“某个名称”);在代码中,然后使用#some name{font..}(就像CSS)的QS,如下所示:tree.header().setStyleSheet('QWidget{font:bold italic large“Times New Roman”}')
?我实际上设置了主窗口(因为QWidget是所有QT小部件的基础,它应该级联到所有小部件(包括标题))。有些东西是QSS无法修改的。QSS不能动态修改其他内容,而是要求您在应用程序启动时针对应用程序初始化QSS。。这是一个好主意,但由于它的一些行为,使用起来可能很笨拙。。希望它能起作用!这不起作用:tree.header().setStyleSheet('QMainWindow{font:bold italic large“Times New Roman”}')
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
mainWindow=QtGui.QMainWindow()
mainWidget=QtGui.QWidget()
mainWindow.setCentralWidget(mainWidget)
mainLayout = QtGui.QVBoxLayout()
mainWidget.setLayout(mainLayout)
mainWindow.setStyleSheet('QWidget { font: bold italic large "Times New Roman" }')
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['One','Two','Tree','Four','Five'])
mainLayout.addWidget(tree)
mainWindow.show()
sys.exit(app.exec_())
tree.header().setFont(font)
QTreeWidget QHeaderView::section {
font-size: 8pt;
}