PySide实现各种形状的按钮
看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实现各种形状的按钮相关推荐
- QT不规则形状的按钮的实现
Qt实现按钮的不规则样式设置,不是视觉欺骗,是真正的不规则按钮,点击按钮外面不会触发按钮的点击信号 使用如下的代码可以实现特殊形状的按钮,但是按钮还是矩形的,如果按在不规则图形的外面,但是是按钮的矩形 ...
- 有关C#中重写按钮的onpaint函数,实现按钮形状的用户自定义
在使用C#进行界面开发的过程中,做界面开发经常会用到按钮,而C#界面中的按钮形状只有矩形的,而如果我们需要其他形状的按钮的话,就需要想点儿其他办法了,一般开发自己的控件有三种方法: 首先是复合控件,从 ...
- Android 实现各种形状和颜色的按钮
Android 实现各种形状的按钮 上一篇 设置透明按钮和自定义背景 这里就不过多讲解 具体是这么设置的,这篇文章主要分享 各种形状和颜色的按钮. 形状1: <shape xmlns:andro ...
- 为什么博图中放置按下按钮无反应_如何更好的设计按钮
按钮是交互设计的常见元素.虽然它们看起来像是一个非常简单的UI元素,但它们仍然是最重要的创建元素之一. 在今天的文章中,将介绍大家需要了解的基本项目,以便创建有效的控件来改善用户体验. 使按钮看起来像 ...
- WPF界面设计技巧(3)—实现不规则动画按钮
WPF界面设计技巧(3)-实现不规则动画按钮 原文:WPF界面设计技巧(3)-实现不规则动画按钮 发布了定义WPF按钮的教程后,有朋友问能否实现不规则形状的按钮,今天我们就来讲一下不规则按钮的制作. ...
- 优秀的设计UI界面按钮素材,让点击率飙升
快节奏的网络数码时代人们越来越离不开智能设备,面对屏幕上无数的按钮,点还是不点是个问题.不知道大家有没有发现,按钮越多,我们点击得越慢.这是因为只要有按钮,我们的下意识就会"检查" ...
- vant 表单按钮置灰_Vant Button 按钮
引入import Vue from 'vue'; import { Button } from 'vant'; Vue.use(Button); 代码演示 按钮类型 支持default.primary ...
- MFC使用CButtonST类实现按钮图片功能
文章引用于:https://blog.csdn.net/wqvbjhc/article/details/12580669 应用的相关连接:https://blog.csdn.net/qq_337234 ...
- 点击展开按钮设计_使您的按钮设计可点击
点击展开按钮设计 A button is an important UI element that will heavily affect your interaction design. Butto ...
最新文章
- PHP定时执行任务的实现
- 全链路压测自动化实践
- 备份一张iPhone拍照写入exif中的orientation图片
- Azure手把手系列 2:微软中国云服务介绍
- asp.net+mysq 数据库操作类
- 输出torch构建的模型结构
- Run P4 without P4factory - A Simple Example In Tutorials. -2
- c语言缓冲池管理算法,操作系统复习资料
- 分治法解决逆序对问题
- python判断_Python中判断一个字符串是否以特定字符前缀开始的函数:startswith()
- java 测试 jar_java – 从可执行jar运行spring测试
- [原创]Linux下网络性能测试Netperf工具介绍及安装
- linear-gradient 立体背景 按钮_2020高邮亮光背景墙8D立体逼真方兴装饰了解更多
- SingBoot集成JPA时单元测试报错:could not initialize proxy - no Session
- 如何安装torch、Pytorch、torchversion
- Xss小游戏通关攻略带解释
- 危化品厂区监控人脸识别/危化品识别EasyGBS+智能分析网关设备助力化工厂区安全生产
- Android 微光闪烁效果
- 流失玩家高达500万 DNF“遗孀”成香饽饽
- 美国国防部可信计算机系统评估系TCSEC
热门文章
- Query suggestion technique of Taobao
- 中国平安旗下「壹账链」和IBM超级账本Fabric的“血缘”关系
- php闭包是什么意思_php闭包是什么
- 基于Python的水母吃鱼游戏的设计与实现
- html在线编辑器添加附件,HTML 编辑器 FCKeditor使用详解
- web前端-JavaScript构造函数创建对象
- Linux基本管理命令 day2
- 小王子PPT模板9套,是专门为幼儿园儿童打造的PPT模板
- c++ 函数声明后面加上 const 有什么作用
- 基于FPGA的FFT变换