PYQT5(15)-基本窗口控件-菜单栏、工具栏和状态栏

本文介绍了PyQt5中菜单栏、工具栏和状态栏的创建与操作,包括添加菜单项、快捷键设置、触发信号处理等。通过示例代码展示了如何在主窗口中添加菜单、工具栏和状态栏,以及它们各自的功能和交互方式。读者将学习到如何在GUI应用中实现用户友好的交互设计。
摘要由CSDN通过智能技术生成

菜单栏menuBar

主要方法

menuBar()返回主窗口的QMenuBar对象
addMenu()在菜单栏中添加一个新的QMenu对象
addAction()向QMenu小控件中添加一个操作按钮,其中包含文本或图标
setEnabled()将操作按钮状态设置为启用/禁用
addSeperator()在菜单中添加一条分隔线
clear()删除菜单/菜单栏的内容
setShortcut()将快捷键关联到操作按钮
setText()设置菜单项的文本
setTitle()设置QMenu小控件的标题
text()返回与QAction对象关联的文本
title()返回QMenu小控件的标题

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

代码示例

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 = bar.addMenu("File")
        file.addAction("New")
        save = QAction("Save", self)
        save.setShortcut("Ctrl+S")
        file.addAction(save)
        edit = file.addMenu("Edit")
        edit.addAction("copy")
        edit.addAction("paste")
        quit = QAction("Quit", self)
        file.addAction(quit)
        # 菜单发射triggered信号,将该信号连接到槽函数proecesstrigger(),该函数接收信号的QAction对象。
        file.triggered[QAction].connect(self.processtrigger)
        self.setLayout(layout)
        self.setWindowTitle("menu 例子")
        self.resize(350, 300)

    def processtrigger(self, q):
        print(q.text() + " is triggered")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = MenuDemo()
    demo.show()
    sys.exit(app.exec_())

 工具栏QToolBar

常用方法

addAction()添加具有文本或图标的工具按钮
addSeperator()分组显示工具按钮
addWidget()添加工具栏中按钮以外的控件
addToolBar()使用QMainWindow类的方法添加一个新的工具栏
setMovable()工具栏变得可移动
setOrientation()工具栏的方向可以设置为Qt.Horizontal或Qt.vertical

每当单击工具栏中的按钮时,都将发射actionTriggered信号。另外,这个信号将关联的QAction对象的引用发送到连接的槽函数上。

代码示例

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_())

状态栏QStatusBar

常用方法

addWidget()在状态栏中添加给定的窗口小控件对象
addPermanentWidget()在状态栏中永久添加给定的窗口小控件对象
showMessage()在状态栏中显示一条临时信息指定时间间隔
clearMessage()删除正在显示的临时信息
removeWidget()从状态栏中删除指定的小控件
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.setWindowTitle("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)
    demo = StatusDemo()
    demo.show()
    sys.exit(app.exec_())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AdolphW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值