我正在使用自定义的ComboBox类,因为我想为所有组合框标准化字体。我尝试过3种不同的方式,如下面的pyqt类定义所示:
class StandardComboBox(QComboBox):
def _init_(self, parent = None):
super(StandardComboBox, self).__init__(parent)
self.setFont(QFont('Courier New', 30)) #<<< 1
self.setStyleSheet("font: 30pt \"Courier New\";") #<<< 2
def paintEvent(self, e):
painter = QStylePainter( self )
painter.setPen( self.palette().color( QPalette.Text ) )
opt = QStyleOptionComboBox()
opt.fontMetrics = QFontMetrics(QFont('Courier New', 30)) #<<<3
self.initStyleOption( opt )
painter.drawComplexControl( QStyle.CC_ComboBox, opt )
painter.drawControl( QStyle.CE_ComboBoxLabel, opt)
要打电话给我所有的课程:
self.myComboBox = StandardComboBox()
但是,我的组合框仍然具有默认样式,而不是我设置的字体。我错过了什么?在组合框上再次调用#1或#2方法可以正确设置字体,但这会破坏我的自定义类的目的。
答案 0 :(得分:2)
删除所有内容,只需将self.setFont(QFont(...))
保留原样__init__
。这对我有用。代码的问题在于,您使用init
方法的单个前导和尾部下划线。放下双下划线,def __init__(self, parent=None))
。
class StandardComboBox(QComboBox):
def __init__(self, parent = None):
super(StandardComboBox, self).__init__(parent)
self.setFont(QFont('Courier New', 30))
此代码足以更改comboBox的字体。
答案 1 :(得分:0)
或者这也有效:
.setStyleSheet(“QComboBox {font:14px'monospace'; background-color:#fff; color:#000; border-style:solid; border-width:1px; border-color:#000; border-radius :none;}“);