pyqt5页面美化全流程摸索(二)——为控件增加下拉选项及增加鼠标悬停后改变按钮颜色功能

2023-05-16

我想为我的一个控件增加菜单栏
搞了半天 查阅了大量文章 都失败了
没法给ToolButton增加menu啊!
我是这么尝试的
首先查阅下列文章
【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习
PyQt5之MenuBar菜单控件的使用(三)
这篇
Qt添加菜单栏和工具栏
这些都只能通过在上方添加横排菜单栏然后再添加菜单
根本没法让我的一个控件添加菜单

我自己写的代码是这样的

		self.ori= QtWidgets.QMenu()

        action1=QtWidgets.QAction('计算iou-使用原图大小',parent=self.ori)
        action2=QtWidgets.QAction('计算iou-使用512*512',parent=self.ori)
        action3=QtWidgets.QAction('退出',parent=self.ori)
        
        self.ori.addAction(action1)
        self.ori.addAction(action2)
        self.ori.addAction(action3)

        self.iouButton.setMenu(self.ori)

我尝试着想让我的某一个控件可以有下拉菜单
但这样根本添加不了
只能通过菜单栏添加
比如
下面的代码就可以成功运行

		bar = self.menuBar()
		# 往菜单栏添加菜单项目
        file = bar.addMenu('文件')
		# 给菜单项目添加子菜单
        new = file.addAction("新建")
        save = file.addAction("保存")

于是我放弃了这种方式
那就只能尝试一下下拉控件了

PYQT5下拉选项框(下拉框)的使用

这里查阅了大量文献之后
这篇博文最有用

我是先设置了按钮的一些形式

				self.iouBox = QtWidgets.QComboBox(self.centralwidget)
                self.iouBox.setGeometry(QtCore.QRect(360, 10, 201, 31))
                font = QtGui.QFont()
                font.setFamily("微软雅黑")
                font.setPointSize(16)
                font.setBold(False)
                font.setItalic(False)
                font.setWeight(9)
                self.iouBox.setFont(font)
                self.iouBox.setStyleSheet("font: 75 16pt \"微软雅黑\";\n"
        "color: rgb(255,255,255);    \n"
        "padding-left:7px;\n"
        "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(251,102,102, 200), stop:1 rgba(20,196,188, 210));\n"
        "border:2px solid rgb(20,196,188);\n"
        "border-radius:15px;")
                self.iouBox.setObjectName("iouBox")
                self.iouBox.addItem("计算iou—原图")
                self.iouBox.addItem("计算iou—512*512")

然后去设置一下他的激活函数

def __init__(self,parent =None):
        super(MyMainWindow,self).__init__(parent)
        self.setupUi(self)
        
        self.iouBox.activated[str].connect(self.iouButtonclick)

然后定义一下

def iouButtonclick(self,text):   
        if text=="计算iou—原图":      

这样就可以在选择不同选项的时候执行不同的函数啦!

鼠标悬停改变按钮的颜色功能

这个功能之前实现过,但是我忘记了怎么设计得了
重新搜索了大量资料后
感谢这篇博文
成功实现了呜呜呜
其实就是直接在样式表里面设计就可以
只是这个语句写错了的话
就显示不出来!!

self.trainButton.setStyleSheet("QToolButton{font: 75 16pt \"微软雅黑\";\n"
        "color: rgb(255,255,255);    \n"
        "padding-left:0px;\n"
        "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(251,102,102, 200), stop:1 rgba(20,196,188, 210));\n"
        "border:2px solid rgb(20,196,188);\n"
        "border-radius:15px;}"
        "QToolButton::hover{background:rgba(251,102,102, 200);}")

颜色前面一定要加background:!!!
我使用的是qt5 如果你是其他版本一定要注意可能不一样
现在终于成功啦!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyqt5页面美化全流程摸索(二)——为控件增加下拉选项及增加鼠标悬停后改变按钮颜色功能 的相关文章

随机推荐