博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成具有三态背景图片的按钮
阅读量:5749 次
发布时间:2019-06-18

本文共 3072 字,大约阅读时间需要 10 分钟。

 

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

 

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_())

 

转载地址:http://tlezx.baihongyu.com/

你可能感兴趣的文章
Tomcat启动找不到JAVA_HOME另类解决办法
查看>>
红外遥控资料
查看>>
luasocks的安装以及注意事项
查看>>
nginx: client intended to send too large body
查看>>
【VMCloud云平台】SCAP(四)租户(一)
查看>>
python---练习---即时标记
查看>>
linux释放内存的方法
查看>>
基于 Android NDK 的学习之旅----- C调用Java
查看>>
开始第一个Python程序!
查看>>
Google 或强制 OEM 预装 20 款应用,给你一个不Root的理由
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
双边过滤器(Bilateral filter)
查看>>
Android图形显示系统——下层显示4:图层合成上(合成原理与3D合成)
查看>>
Windows 10 技术预览
查看>>
centos卸载openjdk,安装sun的jdk
查看>>
Tomcat http跳转https
查看>>
Linux安装MySQL后找不到my.cnf原因以及从sql语句文件恢复数据库
查看>>
一个自动布署.net网站的bat批处理实例
查看>>
tomcat 安装
查看>>