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

  • Post author:
  • Post category:其他


我想为我的一个控件增加菜单栏

搞了半天 查阅了大量文章 都失败了

没法给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 如果你是其他版本一定要注意可能不一样

现在终于成功啦!



版权声明:本文为Laney_Midory原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。