gpt4 book ai didi

button - PyQt按钮点击区域(非矩形区域)

转载 作者:行者123 更新时间:2023-12-01 13:32:01 24 4
gpt4 key购买 nike

我正在为 Maya 开发 PySide 界面,我想知道是否可以为按钮定义一个非矩形可点击区域。

我尝试使用 QPushButton 并扩展 QLabel 对象以获得按钮行为,但你知道是否有可能获得包含带有 alpha channel 的图片的按钮并使用该 alpha 定义按钮的点击区域?

如果你能指导我解决这个问题,我将不胜感激。提前致谢。

我试过这个...

from PySide import QtCore
from PySide import QtGui

class QLabelButton(QtGui.QLabel):

def __init(self, parent):
QtGui.QLabel.__init__(self, parent)

def mousePressEvent(self, ev):
self.emit(QtCore.SIGNAL('clicked()'))

class CustomButton(QtGui.QWidget):
def __init__(self, parent=None, *args):
super(CustomButton, self).__init__(parent)
self.setMinimumSize(300, 350)
self.setMaximumSize(300, 350)

picture = __file__.replace('qbtn.py', '') + 'mario.png'
self.button = QLabelButton(self)
self.button.setPixmap(QtGui.QPixmap(picture))
self.button.setScaledContents(True)

self.connect(self.button, QtCore.SIGNAL('clicked()'), self.onClick)

def onClick(self):
print('Button was clicked')


if __name__ == '__main__':
app = QApplication(sys.argv)
win = CustomButton()
win.show()
app.exec_()
sys.exit()

mario.png

最佳答案

这是我解决上述问题的最终代码...

from PySide import QtCore 
from PySide import QtGui


class QLabelButton(QtGui.QLabel):

def __init(self, parent):
QtGui.QLabel.__init__(self, parent)

def mousePressEvent(self, ev):
self.emit(QtCore.SIGNAL('clicked()'))

class CustomButton(QtGui.QWidget):
def __init__(self, parent=None, *args):
super(CustomButton, self).__init__(parent)
self.setMinimumSize(300, 350)
self.setMaximumSize(300, 350)

pixmap = QtGui.QPixmap('D:\mario.png')

self.button = QLabelButton(self)
self.button.setPixmap(pixmap)
self.button.setScaledContents(True)
self.button.setMask(pixmap.mask()) # THIS DOES THE MAGIC

self.connect(self.button, QtCore.SIGNAL('clicked()'), self.onClick)

def onClick(self):
print('Button was clicked')

关于button - PyQt按钮点击区域(非矩形区域),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com