从零开始学Pyqt5之【控件介绍】(17):菜单栏QMenuBar、QToolBar工具栏、QStatusBar状态栏

简介: 从零开始学Pyqt5之【控件介绍】(17):菜单栏QMenuBar、QToolBar工具栏、QStatusBar状态栏

QMenuBar菜单栏


QMenuBar菜单栏作用


在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。


QMenu类提供了一个可以添加到菜单栏的小控件,也用于创建上下文菜单和弹出菜单。每个QMenu对象都可以包含一个或多个QAction对象或级联的QMenu对象。


添加菜单的步骤:


  1. 通过createPopupMenu()函数;menuBar()函数获取主窗口的QMenuBar对象;


  1. 通过addMenu()函数可以将菜单添加到菜单栏中;


  1. 然后通过addAction()函数可以在菜单中进行添加选项的操作。


QMenuBar常用方法


17f1aca4cee046e78a3c22bc010d2f78.png


注:单击任何QAction按钮时,QMenu对象都会发射triggered信号。


QMenuBar代码示例


# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MenuDemo(QMainWindow):
  def __init__(self, parent=None):
    super(MenuDemo, self).__init__(parent)
    layout = QHBoxLayout()
    # 创建一个菜单栏对象
    bar = self.menuBar()
    # 添加“File”菜单
    file = bar.addMenu("File")
    # 在“File”菜单下添加"New"选项
    # 可通过字符串或QAction添加选项
    file.addAction("New")
    save = QAction("Save",self)
    save.setShortcut("Ctrl+S")
    file.addAction(save)
    # 在"File"菜单下新建"Edit"菜单对象
    edit = file.addMenu("Edit")
    # 在"Edit"菜单对象下添加"copy"与“paste”菜单
    edit.addAction("copy")
    edit.addAction("paste")
    quit = QAction("Quit",self)
    file.addAction(quit)
    # 单击任何QAction按钮时,QMenu对象都会发射triggered信号。
    file.triggered[QAction].connect(self.processtrigger) 
    self.setLayout(layout)
    self.setWindowTitle("menu 例子")
    self.resize(350,300)
    # print(dir(file))
    print(file.actions())
  def processtrigger(self,q):
    print(q.text()+" is triggered")
if __name__ == '__main__':
  app = QApplication(sys.argv)
  demo = MenuDemo()
  demo.show()
  sys.exit(app.exec_())


代码运行结果:


ea6764fab30449b0a47ab54ac862eaaf.png


QToolBar工具栏


QToolBar工具栏作用


QToolBar控件是由文本按钮、图标或其他小控件按钮组成的可移动面板,通常位于菜单栏下方。


QToolBar常用方法


558358da321b440098328d1008aadc76.png


每当单击工具栏中的按钮时,都将发射actionTriggered信号。


QToolBar代码示例


# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class ToolBarDemo( QMainWindow ):
  def __init__(self, parent=None):
    super(ToolBarDemo, self).__init__(parent)
    self.setWindowTitle("toolbar 例子")   
    self.resize(300, 200)
    layout = QVBoxLayout()
    # 在工具栏区域添加文件工具栏
    tb = self.addToolBar("File")
    new = QAction(QIcon("./images/new.png"),"new",self)
    tb.addAction(new)
    open = QAction(QIcon("./images/open.png"),"open",self)
    tb.addAction(open)
    save = QAction(QIcon("./images/save.png"),"save",self)
    tb.addAction(save)
    tb.actionTriggered[QAction].connect(self.toolbtnpressed)
    self.setLayout(layout)
  def toolbtnpressed(self,a):
    print("pressed tool button is",a.text() )
if __name__ == '__main__':
  app = QApplication(sys.argv)
  demo = ToolBarDemo()
  demo.show()
  sys.exit(app.exec_())


代码运行结果:


8ea50ce8651b41ac8d2b273ecc6151c7.png


QStatusBar状态栏


QStatusBar状态栏作用


MainWindow对象在底部保留有一个水平条,作为状态栏(QStatusBar),用于显示永久的或临时的状态信息。


QStatusBar常用方法

bd6769a119cb48348c4d0293e838da40.png

bd6769a119cb48348c4d0293e838da40.png


QStatusBar代码示例


# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class StatusDemo(QMainWindow):
  def __init__(self, parent=None):
    super(StatusDemo, self).__init__(parent)
    bar = self.menuBar()
    file = bar.addMenu("File")
    file.addAction("show")
    file.triggered[QAction].connect(self.processTrigger)
    self.setCentralWidget(QTextEdit())
    # 添加状态栏对象
    self.statusBar= QStatusBar()
    self.setStatusBar(self.statusBar)
    self.setWindowTitle("QStatusBar 例子")
  def processTrigger(self,q):
    if (q.text()=="show"):
      # 5000表示字符串在状态栏显示5s后消失
      self.statusBar.showMessage(q.text()+" 菜单选项被点击了",5000)
if __name__ == '__main__':
  app = QApplication(sys.argv)
  demo = StatusDemo()
  demo.show()
  sys.exit(app.exec_())


代码运行结果:

24f3f1109eb2463d86f166ef8e0d0cf4.png


相关文章
|
4月前
|
搜索推荐 区块链 C++
C++ Qt开发:ToolBar与MenuBar菜单组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`ToolBar`工具栏组件以及与之类似的`MenuBar`菜单栏组件的常用方法及灵活运用。
87 1
|
4月前
|
C++ UED 索引
C++ Qt开发:StatusBar底部状态栏组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`QStatusBar`底部状态栏组件的常用方法及灵活运用。`QStatusBar` 是 Qt 中用于在主窗口底部显示状态信息的部件。它通常用于向用户提供应用程序的当前状态、进度信息、或者其他与应用程序运行相关的消息。通过在状态栏上显示文本、永久部件、进度条等内容,可以为用户提供清晰的反馈和实时信息。在设计应用程序界面时,使用状态栏有助于提升用户体验。
37 0
C++ Qt开发:StatusBar底部状态栏组件
|
4月前
|
C++
C++ Qt开发:自定义Dialog对话框组件
在之前的文章中笔者已经为大家展示了默认`Dialog`组件的使用方法,虽然内置组件支持对数据的输入,但有时候我们需要一次性输入多个数据,此时如果之使用默认模态对话框似乎不太够用,此时我们需要自己创建一个自定义对话框,需要说明的是此类对话框也是一种窗体,所以可以在其上面放置任何通用组件,以实现更多复杂的开发需求。自定义对话框需要解决的问题是,如何让父窗体与子窗体进行数据交换,要实现数据的交换有两种方式,第一种方式是通过动态加载模态对话框,当用户点击确定后通过`GetValue()`来拿到数据,而第二种方式则是通过发送信号的方式将数据投递给父窗体,这两种方式都可以,读者可根据自身需求来选择不同的通
39 1
C++ Qt开发:自定义Dialog对话框组件
|
4月前
|
Windows
[Qt5] 创建菜单栏、工具栏、核心控件和浮动窗口
[Qt5] 创建菜单栏、工具栏、核心控件和浮动窗口
32 0
从零开始学Pyqt5之【控件介绍】(14):QFileDialog文件选择对话框控件
从零开始学Pyqt5之【控件介绍】(14):QFileDialog文件选择对话框控件
从零开始学Pyqt5之【控件介绍】(14):QFileDialog文件选择对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件
从零开始学Pyqt5之【控件介绍】(10):QDialog对话框控件
从零开始学Pyqt5之【控件介绍】(10):QDialog对话框控件
从零开始学Pyqt5之【控件介绍】(10):QDialog对话框控件
【QT】QT菜单栏、状态栏、工具栏
【QT】QT菜单栏、状态栏、工具栏

热门文章

最新文章