max新建工具栏图标_PyQt5学习笔记(八)菜单、工具栏与状态栏

创建与使用菜单

获取菜单栏对象,并在菜单栏对象下创建标签,在标签下创建子标签。

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
​
class Menu(QMainWindow):
    def __init__(self):
        super(Menu, self).__init__()
        # 获取菜单栏
        bar = self.menuBar()
​
        # 在菜单栏下创建一个标签“文件”
        file = bar.addMenu("文件")
​
        # 在文件标签下增加一个“新建”子标签
        file.addAction("新建")
​
        # 创建一个QAction对象
        save = QAction("保存", self)
        # 设置快捷键
        save.setShortcut("Ctrl + S")
        # 将QAction对象加入“文件”标签中,成为它的一个子标签
        file.addAction(save)
​
        save.triggered.connect(self.process)
​
        # 创建新的标签“Edit”
        edit = bar.addMenu("Edit")
        edit.addAction("copy")
        edit.addAction("paste")
​
        # 创建退出子标签并加入“文件”标签中
        quit = QAction("退出", self)
        file.addAction(quit)
​
    def process(self):
        # 打印触发信号的那个控件的名字
        print(self.sender().text())
​
​
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = Menu()
    main.show()
    sys.exit(app.exec_())

运行效果:

55be2429e8669a2d3be5cc38c7b0d20a.png

所以,我们得到了创建菜单栏的步骤:

  • 通过self.menuBar()获取菜单栏对象。
  • 通过菜单栏对象的addMenu()方法往菜单栏中增加标签。
  • 往标签对象中增加子标签有两种方法:
    • 直接使用标签对象的addAction()方法创建。
    • 先创建QAction()对象,代表一个子标签,再以该对象为参数使用标签对象的addAction()方法,将创建好的子标签加入标签中。需要注意的是创建QAction对象时,需要填入self参数,否则,即便使用addAction传入后也不会再主菜单中显示。

创建和使用工具栏

往主窗口添加工具栏。

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
​
class ToolBar(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self.initUI()
​
    def initUI(self):
        self.setWindowTitle("工具栏例子")
        self.resize(300, 200)
​
        tb1 = self.addToolBar("File")
​
​
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = ToolBar()
    main.show()
    sys.exit(app.exec_())

运行效果:

4fb0eb432b2103c35b43804d801ed3a6.png
可以看到,主窗口上侧多了一道横线

下面尝试往这个空无一物的工具栏上增加工具

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
​
class ToolBar(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self.initUI()
​
    def initUI(self):
        self.setWindowTitle("工具栏例子")
        self.resize(300, 200)
​
        # 创建一个工具栏,名为File
        tb1 = self.addToolBar("File")
​
        # 往工具栏中添加一个名为set,并且设置了图标对的QAction对象作为工具选项
        new = QAction(QIcon('./image/set.ico'), "set", self)
        tb1.addAction(new)
​
        refresh = QAction(QIcon('./image/refresh.ico'), "refresh", self)
        tb1.addAction(refresh)
​
​
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = ToolBar()
    main.show()
    sys.exit(app.exec_())

运行效果:

4cc2f85cf27a3a60013b5693b2c963ff.png

可以发现,工具栏默认是不显示程序中设置的QAction对象的文本内容的,我们起的名字,在工具栏中只会以悬停提示的方式展示

那么如何在工具栏上既显示文本,又显示图标呢?只要使用工具栏对象的setToolButtonStyle()方法(顾名思义,是用来设置按钮展示风格的方法)就行了。参数还是Qt下的常量。

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
​
class ToolBar(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self.initUI()
​
    def initUI(self):
        self.setWindowTitle("工具栏例子")
        self.resize(500, 400)
​
        # 创建一个工具栏,名为File
        tb1 = self.addToolBar("File")
​
        # 往工具栏中添加一个名为set,并且设置了图标对的QAction对象作为工具选项
        new = QAction(QIcon('./image/set.ico'), "set", self)
        tb1.addAction(new)
​
        refresh = QAction(QIcon('./image/refresh.ico'), "refresh", self)
        tb1.addAction(refresh)
​
        print = QAction(QIcon('./image/print.ico'), "print", self)
        tb1.addAction(print)
​
        # 设置按钮展示风格:文本在图标旁边
        tb1.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
​
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = ToolBar()
    main.show()
    sys.exit(app.exec_())

运行效果:

a5d7ce54780bf09c7780ec45c6e5116e.png

Qt.ToolButtonTextUnderIcon这样的设置风格的常量有以下几个:

  • Qt.ToolButtonIconOnly:只显示图标,也是默认的风格展示形式。
  • Qt.ToolButtonTextOnly:只显示文本。
  • Qt.ToolButtonTextUnderIcon:文本和图标都显示,文本显示在图标的下面。
  • Qt.ToolButtonTextBesideIcon:文本和图标都显示,文本显示在图标的右侧。
  • Qt.ToolButtonFollowStyle:好像没有发生什么改变,效果和默认情况一样。

但是我们发现这只按钮风格的效果施加在了所有的工具栏选项上。那么怎样才能做到,对每一个工具栏选项分别施加我们所需要的按钮风格效果呢?我们可以通过创建多个工具栏来实现。

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
​
class ToolBar(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self.initUI()
​
    def initUI(self):
        self.setWindowTitle("工具栏例子")
        self.resize(300, 200)
​
        # 创建一个工具栏,名为File
        tb1 = self.addToolBar("File")
​
        # 往工具栏中添加一个名为set,并且设置了图标对的QAction对象作为工具选项
        set = QAction(QIcon('./image/set.ico'), "set", self)
        tb1.addAction(set)
​
        refresh = QAction(QIcon('./image/refresh.ico'), "refresh", self)
        tb1.addAction(refresh)
​
        print = QAction(QIcon('./image/print.ico'), "print", self)
        tb1.addAction(print)
​
        tb2 = self.addToolBar("File1")
        set1 = QAction(QIcon('./image/set.ico'), "set1", self)
        tb2.addAction(set1)
​
        tb2.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
​
​
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = ToolBar()
    main.show()
    sys.exit(app.exec_())

运行效果:

bf5a9558e1c64e3992c945952d2604b1.png

最后,我们来为按钮添加动作:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
​
class ToolBar(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self.initUI()
​
    def initUI(self):
        self.setWindowTitle("工具栏例子")
        self.resize(300, 200)
​
        # 创建一个工具栏,名为File
        tb1 = self.addToolBar("File")
​
        # 往工具栏中添加一个名为set,并且设置了图标对的QAction对象作为工具选项
        set = QAction(QIcon('./image/set.ico'), "set", self)
        tb1.addAction(set)
​
        refresh = QAction(QIcon('./image/refresh.ico'), "refresh", self)
        tb1.addAction(refresh)
​
        print = QAction(QIcon('./image/print.ico'), "print", self)
        tb1.addAction(print)
​
        tb2 = self.addToolBar("File1")
        set1 = QAction(QIcon('./image/set.ico'), "set1", self)
        tb2.addAction(set1)
​
        tb2.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
​
        tb1.actionTriggered.connect(self.toolbtnpressed)
        tb2.actionTriggered.connect(self.toolbtnpressed)
​
    def toolbtnpressed(self, a):
        print("按下的按钮名称为{}".format(a.text()))
​
​
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = ToolBar()
    main.show()
    sys.exit(app.exec_())

运行效果:

1f374aa6ba7343f1fdc4ae62d3ea95f9.png

创建和使用状态栏

状态栏一般是UI的左下角显示状态的一栏。

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
​
class StatusBar(QMainWindow):
    def __init__(self):
        super(StatusBar, self).__init__()
        self.initUI()
​
    def initUI(self):
        self.setWindowTitle("状态栏演示")
        self.resize(300, 200)
​
        bar = self.menuBar()
        file = bar.addMenu("File")
        file.addAction("show")
        file.triggered.connect(self.processTrigger)
​
        # 在主窗口的中心设置一个QTextEdit控件
        self.setCentralWidget(QTextEdit())
​
        # 获取状态栏
        self.statusBar = QStatusBar()
        self.setStatusBar(self.statusBar)
​
​
    def processTrigger(self, q):
        if q.text() == "show":
            self.statusBar.showMessage(q.text() + "菜单被点击了", 5000)
​
​
​
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = StatusBar()
    main.show()
    sys.exit(app.exec_())

运行效果:

b50dcdcdfb7aa7c94bd675a8a798d69d.png
点击“show”会在左下角显示一个存在5秒的提示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的影城管理系统,源码+数据库+论文答辩+毕业论文+视频演示 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控界面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。 关键词:小徐影城管理系统;Spring Boot框架,MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值