生成具有三态背景图片的按钮

class PussButton:

    #
    # 生成具有三态背景图片的按钮
    #
    def init(self, *imgPath):
            from PyQt5.QtWidgets import  QPushButton
            from PyQt5.QtGui import  QPixmap

            length = len(imgPath)            

            if length==3:
                nomalPath = imgPath[0]
                hoverPath = imgPath[1]
                pressedPath = imgPath[2]
            else:
                pressedPath=hoverPath=nomalPath = imgPath[0]

            pixmap_mask=QPixmap(‘./img/1.png‘)
            but = QPushButton(‘‘)

            print(‘pressedPath‘, pressedPath,imgPath )

            #调整按钮的大小,使其和背景的大小一致
            but.setFixedSize( pixmap_mask.width(), pixmap_mask.height() )

            # 图片的三种状态
            but.setStyleSheet("QPushButton{border-image:url("+nomalPath+");}"
                              "QPushButton:hover{border-image:url("+hoverPath+");}"
                              "QPushButton:pressed{border-image:url("+pressedPath+");}")
            #
            # 设置遮罩,如果不设置遮罩,PNG图片的空白部分也可以点击的
            #
            but.setMask(pixmap_mask.createHeuristicMask())    

            return but

    def init2(self):

            from PyQt5.QtWidgets import  QPushButton
            from PyQt5.QtGui import  QPixmap, QIcon
            from PyQt5.QtCore import QSize
            pixmap_mask=QPixmap(‘./img/1.png‘)
            but = QPushButton(‘‘)
            but.setFixedSize( pixmap_mask.width(), pixmap_mask.height() );
            but.setMask(pixmap_mask.createHeuristicMask());
            icon = QIcon(pixmap_mask)

            but.setIcon(icon);
            but.setIconSize(QSize(pixmap_mask.width(),pixmap_mask.height()));
            but.setToolTip("hello")
            but.clicked.connect(self.print_click)

            return but

    def print_click(self):
            print(‘print_click‘)

if __name__ == ‘__main__‘:  

    import sys
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtWidgets import (QWidget,  QLabel, QVBoxLayout)
    from PyQt5.QtCore   import Qt
    from PyQt5.QtGui import  QPixmap, QImage

    app = QApplication(sys.argv)  

#####################################################
    main= QWidget()

    layout_main = QVBoxLayout()
    layout_main.setAlignment( Qt.AlignLeft )
    main.setLayout(layout_main)

    label_top = QLabel()
    pixmap_top=QPixmap(‘./img/3.png‘)
    label_top.setPixmap(pixmap_top)
    layout_main.addWidget(label_top)

    tool = PussButton()
    paths = [‘./img/1.png‘,‘./img/2.png‘,‘./img/3.png‘ ]
    but_3 = tool.init(*paths)
    layout_main.addWidget(but_3)

    but_4 =tool.init2()
    layout_main.addWidget(but_4)

    image = QImage("./img/2.png");
    pixmap=  QPixmap()
    pixmap.convertFromImage(image)
    label= QLabel()

    label.setPixmap(pixmap)

    main.show()
#####################################################
    sys.exit(app.exec_())
时间: 2024-10-13 21:06:50

生成具有三态背景图片的按钮的相关文章

CSS之生成全屏背景图片

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>CSS之生成全屏背景图片</title> <link rel="stylesheet" href="http://files.cnblogs.com/files/caidupingblogs/backgroundima

MFC用代码添加对话框背景图片和按钮图片

运行环境:VS2013 一.添加对话框背景图片 ①插入位图,把生成的空白位图进行替换(xxx.bmp图片的名称和格式与生成的空白位图保持一致) ②查看属性,得到位图ID ③编写代码: void CMFC_8Dlg::OnPaint() { if (IsIconic()) { .... } else { //CDialogEx::OnPaint(); CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.Crea

Win7无法设置背景图片的快速解决办法

不知道怎么回事,win7电脑突然连个性化设置背景图片的按钮都没了.真操蛋~~~满屏的黑色背景图案,看着实在是不爽. 为了解决这个问题,网上搜索了好长时间,都不尽然! 最后想到了一个超简单的方法就是: 找到这个路径:D:\Users\Terry\AppData\Roaming\Microsoft\Windows\Themes 就是用windows画图软件打开,然后设置为背景图片即可. 我勒个去,顿时发现自己是个天才!!!O(∩_∩)O哈哈~....... Win7无法设置背景图片的快速解决办法

MFC 基础知识:对话框背景添加图片和按钮Button添加图片

很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又回顾了下相关知识.的确,任何知识一段时间过后都比较容易忘记,但回顾起来还是很有印象的. 这篇文章主要是回顾以前的MFC基础知识,给对话框添加背景图片和给按钮button添加背景图片:希望此篇基础性文章对大家有所帮助!同时为下次做MFC相关知识提供点此时所想所感吧.内容比较简单,高手飘过~ 一. 对话框背景添加图片 首先通过VS2012创建MFC对话框应用程序,项目

设置按钮的背景图片

设置按钮在不同状态下的背景图片(为了保证高亮状态下的图片正常显示,必须设置按钮的type为custom)

【iOS开发-背景】关于按钮背景图片的拉伸

关于按钮背景图片拉伸与不拉伸的效果 拉伸的效果: 不拉伸的效果 拉伸的效果: 不拉伸的效果 拉伸原理 iOS开发中,有一个方法可以将图片按照指定的形式拉伸,拉伸方式为下图,一般拉伸部分都为0: 实现方式 新建一个UIImage的分类 为UIImage扩充一个方法+(UIImage )resizableImage:(NSString )imageName: 然后再按钮所在的ViewController里面设置按钮的背景 分类 @implementation UIImage (Extension)

ExtJs4学习(十三)如何给文件上传按钮加背景图片

我们日常看到的上传按钮都是这样的 当然browse是默认的,我们可以去改变它,比如替换成"上传",配置为buttonText: '上传', 如果我们想给按钮添加背景图片呢,你可能注意到了这个配置 buttonConfig { xtype: 'filefield', emptyText: 'Select an image', fieldLabel: 'Photo', name: 'photo-path', buttonText: '', buttonConfig: { iconCls:

初学ToggleButton 点击按钮,更换按钮背景图片;再次点击,恢复之前背景图

上方的图标,R.drawable.register_checked  是选中图片 下方的图标,   R.drawable.register_unchecked 是未选中图片 默认是上方的选中效果.点击按钮,取消选中:再次点击按钮,再次选中. 其实这是两张图片.关键在于图片必须跟着按钮改变. 一开始想用Button实现,纠结了很久,只有按上去和松开的效果,并没有点击后变背景图片的效果. 后来百度了很久,找到可以 用ToggleButton实现我想要的效果,在这里与大家分享. XML: androi

WPF中当鼠标移到按钮上时,按钮的背景图片消失的问题

如果给按钮设置了背景图片,当鼠标移到按钮上的时候,按钮就好变成一个浅蓝色的按钮,背景图片就消失了,对于这个问题有很多解决方法,我只分享一下我的解决方法. 我第一次用的方式是在按钮中添加一个图片,不用背景来设置. <Button HorizontalAlignment="Left" Margin="179,56.506,0,0" Click="Button_Click" VerticalAlignment="Top" Wi