看PySide的示例代码的时候,有个时钟的案例,最后它将那个时钟设置成一个圆形,这顿时让我很感兴趣,细看代码,就是用了asMask的方法,QWidget这个类里有这个方法,共有两种使用方法,如下:

于是找了张图片作为mask试试,实现下各种形状的按钮,如下图,有mask的时候是这样的

无mask的时候是这样的

其实这里主要用到了重写resizeEvent,以及最后用图片作为个mask

self.setMask(self.mask_pixmap.mask())

主要代码如下:

from PySide2 import QtGui, QtWidgets, QtCoreclass MaskButton(QtWidgets.QPushButton):clicked = QtCore.Signal(str)def __init__(self, ):super(MaskButton, self).__init__()self.setFixedSize(64, 64)self.mask_pixmap = QtGui.QPixmap('C:/Program Files/Autodesk/Maya2017/icons/displacementMap_64.png')self.setIcon(QtGui.QIcon('C:/Program Files/Autodesk/Maya2017/icons/displacementMap_64.png'))self.setIconSize(QtCore.QSize(64, 64))self.setObjectName('mask label')# def paintEvent(self, event):#     super(MaskButton, self).paintEvent(event)#     print 'paint'#     painter = QtGui.QPainter(self)#     painter.drawImage(2, 1, QtGui.QImage('C:/Program Files/Basefount/Animcraft/autodesk/maya/scripts/BG/old/button_J_2.png'))def resizeEvent(self, event):self.setMask(self.mask_pixmap.mask())super(MaskButton, self).resizeEvent(event)def mousePressEvent(self, event):self.clicked.emit(self.objectName())class Window(QtWidgets.QDialog):def __init__(self, parent):QtWidgets.QDialog.__init__(self, parent)layout=QtWidgets.QGridLayout(self)btn=MaskButton()btn.clicked.connect(self.btn_cmd)layout.addWidget(btn, 0, 1)def btn_cmd(self, name):print('"%s" clicked' % name)def get_maya_window():from shiboken2 import wrapInstanceptr = omui.MQtUtil.mainWindow()return wrapInstance(long(ptr), QtWidgets.QWidget)if __name__ == '__main__':mayaWin = get_maya_window()window=Window(mayaWin)window.setGeometry(500, 300, 200, 200)window.show()

比如我们把mask改成region方式:

    def resizeEvent(self, event):region = QtGui.QRegion(QtCore.QRect(20, 20, 40, 30), QtGui.QRegion.Ellipse)self.setMask(region)# self.setMask(self.mask_pixmap.mask())super(MaskButton, self).resizeEvent(event)

达到的效果如下:


就是个椭圆形状的了。

也可以直奔TDMonk,看这个Monk念更多的经

PySide实现各种形状的按钮相关推荐

  1. QT不规则形状的按钮的实现

    Qt实现按钮的不规则样式设置,不是视觉欺骗,是真正的不规则按钮,点击按钮外面不会触发按钮的点击信号 使用如下的代码可以实现特殊形状的按钮,但是按钮还是矩形的,如果按在不规则图形的外面,但是是按钮的矩形 ...

  2. 有关C#中重写按钮的onpaint函数,实现按钮形状的用户自定义

    在使用C#进行界面开发的过程中,做界面开发经常会用到按钮,而C#界面中的按钮形状只有矩形的,而如果我们需要其他形状的按钮的话,就需要想点儿其他办法了,一般开发自己的控件有三种方法: 首先是复合控件,从 ...

  3. Android 实现各种形状和颜色的按钮

    Android 实现各种形状的按钮 上一篇 设置透明按钮和自定义背景 这里就不过多讲解 具体是这么设置的,这篇文章主要分享 各种形状和颜色的按钮. 形状1: <shape xmlns:andro ...

  4. 为什么博图中放置按下按钮无反应_如何更好的设计按钮

    按钮是交互设计的常见元素.虽然它们看起来像是一个非常简单的UI元素,但它们仍然是最重要的创建元素之一. 在今天的文章中,将介绍大家需要了解的基本项目,以便创建有效的控件来改善用户体验. 使按钮看起来像 ...

  5. WPF界面设计技巧(3)—实现不规则动画按钮

    WPF界面设计技巧(3)-实现不规则动画按钮 原文:WPF界面设计技巧(3)-实现不规则动画按钮 发布了定义WPF按钮的教程后,有朋友问能否实现不规则形状的按钮,今天我们就来讲一下不规则按钮的制作. ...

  6. 优秀的设计UI界面按钮素材,让点击率飙升

    快节奏的网络数码时代人们越来越离不开智能设备,面对屏幕上无数的按钮,点还是不点是个问题.不知道大家有没有发现,按钮越多,我们点击得越慢.这是因为只要有按钮,我们的下意识就会"检查" ...

  7. vant 表单按钮置灰_Vant Button 按钮

    引入import Vue from 'vue'; import { Button } from 'vant'; Vue.use(Button); 代码演示 按钮类型 支持default.primary ...

  8. MFC使用CButtonST类实现按钮图片功能

    文章引用于:https://blog.csdn.net/wqvbjhc/article/details/12580669 应用的相关连接:https://blog.csdn.net/qq_337234 ...

  9. 点击展开按钮设计_使您的按钮设计可点击

    点击展开按钮设计 A button is an important UI element that will heavily affect your interaction design. Butto ...

最新文章

  1. PHP定时执行任务的实现
  2. 全链路压测自动化实践
  3. 备份一张iPhone拍照写入exif中的orientation图片
  4. Azure手把手系列 2:微软中国云服务介绍
  5. asp.net+mysq 数据库操作类
  6. 输出torch构建的模型结构
  7. Run P4 without P4factory - A Simple Example In Tutorials. -2
  8. c语言缓冲池管理算法,操作系统复习资料
  9. 分治法解决逆序对问题
  10. python判断_Python中判断一个字符串是否以特定字符前缀开始的函数:startswith()
  11. java 测试 jar_java – 从可执行jar运行spring测试
  12. [原创]Linux下网络性能测试Netperf工具介绍及安装
  13. linear-gradient 立体背景 按钮_2020高邮亮光背景墙8D立体逼真方兴装饰了解更多
  14. SingBoot集成JPA时单元测试报错:could not initialize proxy - no Session
  15. 如何安装torch、Pytorch、torchversion
  16. Xss小游戏通关攻略带解释
  17. 危化品厂区监控人脸识别/危化品识别EasyGBS+智能分析网关设备助力化工厂区安全生产
  18. Android 微光闪烁效果
  19. 流失玩家高达500万 DNF“遗孀”成香饽饽
  20. 美国国防部可信计算机系统评估系TCSEC

热门文章

  1. Query suggestion technique of Taobao
  2. 中国平安旗下「壹账链」和IBM超级账本Fabric的“血缘”关系
  3. php闭包是什么意思_php闭包是什么
  4. 基于Python的水母吃鱼游戏的设计与实现
  5. html在线编辑器添加附件,HTML 编辑器 FCKeditor使用详解
  6. web前端-JavaScript构造函数创建对象
  7. Linux基本管理命令 day2
  8. 小王子PPT模板9套,是专门为幼儿园儿童打造的PPT模板
  9. c++ 函数声明后面加上 const 有什么作用
  10. 基于FPGA的FFT变换