gpt4 book ai didi

Python在pyqt5中创建一个真正的圆形按钮

转载 作者:行者123 更新时间:2023-12-04 14:24:41 27 4
gpt4 key购买 nike

我尝试创建一个圆形按钮,但实际上 pyqt 仍然创建一个方形按钮。找到的所有示例只是创建方形按钮并在其中放置一个圆形图像,但是当我尝试隐藏按钮的背景时仍然失败。我也尝试添加一些悬停功能,但这应该在事后起作用,因此您可以跳过它。我的代码在这里:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QAction
from PyQt5.QtGui import QPalette
# from video import VideoWindow
import sys

class HoverButton(QtWidgets.QToolButton):

def __init__(self, parent=None):
super(HoverButton, self).__init__(parent)
self.setMouseTracking(True)

def enterEvent(self,event):
# print("Enter")
self.setStyleSheet('''
border-image: url("images/exit.jpg") 10 10 2 2;
border-top: 10px transparent;
border-bottom: 10px transparent;
border-right: 2px transparent;
border-left: 2px transparent''')
self.setGeometry(QtCore.QRect(1100, 550, 160, 161))

def leaveEvent(self,event):
self.setStyleSheet('''
border-image: url("images/exit.jpg") 10 10 2 2;
border-top: 10px transparent;
border-bottom: 10px transparent;
border-right: 2px transparent;
border-left: 2px transparent''')
self.setGeometry(QtCore.QRect(1100, 550, 140, 141))

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1371, 924)
MainWindow.setAcceptDrops(True)
self.button = HoverButton(self)
self.button.setGeometry(QtCore.QRect(1100, 550, 140, 141))
self.button.setStyleSheet('''background: transparent;
border-image: url("images/exit.jpg") 3 10 3 10;
border-top: 3px transparent;
border-bottom: 3px transparent;
border-right: 10px transparent;
border-left: 10px transparent;
''')
self.button.setObjectName('button')
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

输出:
enter image description here

最佳答案

一种可能的解决方案是使用 setMask() ,这个实现的好处是点击事件只会针对区域内的点:

class HoverButton(QtWidgets.QToolButton):
def __init__(self, parent=None):
super(HoverButton, self).__init__(parent)
self.setStyleSheet('''border-image: url("imagen.jpg")''')

def resizeEvent(self, event):
self.setMask(QtGui.QRegion(self.rect(), QtGui.QRegion.Ellipse))
QtWidgets.QToolButton.resizeEvent(self, event)

前:

enter image description here

后:

enter image description here

在你的情况下 QRect()传递给 QRegion必须适应您的图像大小,因为圆形元素比您的图像小,一个更简单的方法是编辑您的图像,使圆圈完美地刻在您的图像中,就像我的图像一样。

关于Python在pyqt5中创建一个真正的圆形按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48290707/

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