看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. 虚拟机出现蓝屏解决方法
  2. Too many open files错误与解决方法
  3. 【Mybatis 之应用篇】 5_Mybatis总结(附20道练习题以及答案)
  4. 【题解】Luogu SP1435 PT07X - Vertex Cover
  5. python精要(80)-wxpython(2)-helloworld
  6. php可变变量讲解,PHP可变变量实例详解
  7. java 拦截器ajax_(转)拦截器深入实践 - JAVA XML JAVASCRIPT AJAX CSS - BlogJava
  8. 基础01类与对象、封装、构造方法
  9. Linux电源管理(2)_Generic PM之基本概念和软件架构
  10. mysq命令行导出sql_mysql 命令行导入导出.sql文件
  11. FZU《C语言程序综合设计》
  12. 将m个相同的球全部放到n个相同的盒子里面有几种放法,盒子不能为空
  13. STL源码剖析学习之increment、decrement、dereference实现源码
  14. Fortran中输出Tecplot格式
  15. 2023电工杯数学建模思路 - 复盘:校园消费行为分析
  16. 编程 - 变量的命名方法
  17. Space/Aerial-Assisted Computing Offloading for IoT Applications: A Learning-Based论文复现
  18. linux系统:can't create transaction lock on /var/lib/rpm/.rpm.lock 错误
  19. 大幅降低PUE绝非不可能 浪潮MDC如何打造梦幻王国?
  20. EOS系列 - EOS-VM

热门文章

  1. Glup命令行相关报错
  2. ajaxsetup获取ajax的url_$.ajaxSetup在ajax请求中的使用
  3. 2种可预防男性猝死的食物 你吃过吗?
  4. 微型计算机的状况,微型计算机行业报告_2013-2017年中国微型计算机行业分析及发展预测报告_中商情报网...
  5. jqery图片展示效果
  6. iOS逆向之脱壳工具creakerXI+,最简单、最适合新手的脱壳工具
  7. 【调剂】西安微电子技术研究所2023年硕士研究生入学考试复试分数线及复试安排...
  8. 蒙迪欧致胜豪华版钥匙没电了怎么启动汽车
  9. 4万字,阿里云《大型体育赛事云上实战精选》电子书发布!
  10. springalibaba的各种组件应用