pyqt-自定义QComboBox类样式重置为默认值

我使用的是自定义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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章