对setStyleSheet的一点入门探索

本文详细记录了作者在学习PyQt时遇到的问题,即如何正确使用setStyleSheet设置对象样式。通过一系列尝试,作者发现样式参数的类选择器(如QWidget、QFrame、QPushButton)并不需要与目标对象具有类继承关系,即可生效。此外,通过实验验证了不同选择器对对象样式的影响,揭示了Qt Style Sheets的工作原理。最后,提供了Qt5类继承关系和样式表示例的官方参考链接。
摘要由CSDN通过智能技术生成

最近学习pyqt教程(http://zetcode.com/gui/pyqt5/)到dialog章节时碰到一个疑问,先附上教程中的源码:

colordialog.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

In this example, we select a color value
from the QColorDialog and change the background
color of a QFrame widget. 

Author: Jan Bodnar
Website: zetcode.com 
Last edited: August 2017
"""

from PyQt5.QtWidgets import (QWidget, QPushButton, QFrame, 
    QColorDialog, QApplication)
from PyQt5.QtGui import QColor
import sys

class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        col = QColor(0, 0, 0) 

        self.btn = QPushButton('Dialog', self)
        self.btn.move(20, 20)

        self.btn.clicked.connect(self.showDialog)

        self.frm = QFrame(self)
        self.frm.setStyleSheet("QWidget { background-color: %s }" 
            % col.name())
        self.frm.setGeometry(130, 22, 100, 100)            
        
        self.setGeometry(300, 300, 250, 180)
        self.setWindowTitle('Color dialog')
        self.show()
        
        
    def showDialog(self):
      
        col = QColorDialog.getColor()

        if col.isValid():
            self.frm.setStyleSheet("QWidget { background-color: %s }"
                % col.name())
            
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

我的疑问在initUI函数这里:

self.frm.setStyleSheet("QWidget { background-color: %s }" 
            % col.name())
为什么frm设置样式时用的参数是父类QWidget而不是QFrame?这里的frm和QWidget到底是什么关系?


  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值