我使用的是自定义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方法之一可以正确设置字体,但这违反了我的自定义类的目的。
删除所有内容,直接将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的字体。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句