从零开始学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


相关文章
|
7月前
Qt6学习笔记三(QMainWindow、菜单栏、工具栏、状态栏、铆接部件、核心部件)
Qt6学习笔记三(QMainWindow、菜单栏、工具栏、状态栏、铆接部件、核心部件)
204 0
|
7月前
|
索引
MFC工具栏和状态栏
MFC工具栏和状态栏
75 1
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件
|
C++
Qt界面优化:鼠标双击特效
Qt界面优化:鼠标双击特效
254 1
Qt界面优化:鼠标双击特效
C# winform 获取标题栏,状态栏,菜单栏的高度
//获得当前窗体标题栏高度 MessageBox.Show("当前窗体标题栏高度"+(this.
1742 0
【QT】QT菜单栏、状态栏、工具栏
【QT】QT菜单栏、状态栏、工具栏
|
C#
WPF 右上角带数字的按钮
原文:WPF 右上角带数字的按钮 效果如图所示   三种方案, 1:不改控件模版,布局实现,死开 2:改button模版,利用附加属性,附加附加属性,功能多了话,不利于拓展 3:继承button,添加依赖属性,接下来是这种     1:新建类 为啥交LBSButton,因为...
1271 0
|
C#
WPF 标题栏 右键窗口标题添加关于对话框
原文:WPF 标题栏 右键窗口标题添加关于对话框 /// /// wpf标题栏 右键菜单 中添加新项 /// public partial class MainWindow : Window { private const int W...
1233 0

热门文章

最新文章