我想为我的一个控件增加菜单栏
搞了半天 查阅了大量文章 都失败了
没法给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 如果你是其他版本一定要注意可能不一样
现在终于成功啦!