PySide学习笔记第六章-菜单和工具栏

本文是PySide学习笔记的第六章,重点介绍了如何在Qt环境中使用QMainWindow创建主窗口,并在此基础上构建菜单栏和工具栏。菜单栏包含一个关闭窗口的命令,可通过Ctrl+Q快捷键触发。同时,文章还提到了工具栏的作用,即提供常用命令的快捷方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们用QtGui.QMainWindow class 创建一个主窗口,然后在该主窗口中才能创建 状态栏,工具栏,以及菜单栏

一、创建状态栏

# -*- coding: utf-8 -*-
import sys
from PySide import QtGui

class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        self.statusBar().showMessage('Ready')# QtGui.QMainWindow中创建一个状态栏,然后设置状态栏显示的信息

        self.setGeometry(300, 300, 100, 50)
        self.setWindowTitle('Statusbar')
        self.show()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
二、菜单栏

在该例子中,我们创建了一个只有一个菜单的菜单栏,菜单包含一个关闭窗口的动作。而且还有一个状态栏的动作,通过Ctrl+Q快捷键也可以关闭窗口

# -*- coding: utf-8 -*-

"""
ZetCode PySide tutorial

This program creates a menubar.

author: Jan Bodnar
website: zetcode.com
last edited: August 2011
"""

import sys
from PySide import QtGui

class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self) # 创建一个退出动作,该动作会关闭当前窗口
        exitAction.setShortcut('Ctrl+Q') # 自定义快捷键
        exitAction.setStatusTip('Exit application') # 状态栏提示
        exitAction.triggered.connect(self.close) # 利用信号槽机制,将退出动作和窗口的关闭函数联系起来

        self.statusBar()

        menubar = self.menuBar() # 创建一个菜单栏
        fileMenu = menubar.addMenu('&File') # 在菜单栏中添加 菜单
        fileMenu.addAction(exitAction) # 将前面创建的exitAction添加到该菜单

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Menubar')
        self.show()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
三、工具栏

在Qt里,菜单包含里所有我们可以在一个应用中用到的命令,而工具栏提供了一种快捷方式来触发大多数常用的命令(即快捷键功能)

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PySide tutorial

This program creates a toolbar.

author: Jan Bodnar
website: zetcode.com
last edited: August 2011
"""

import sys
from PySide import QtGui

class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(self.close)

        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Toolbar')
        self.show()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
四、将以上所有功能融合

# -*- coding: utf-8 -*-

"""
ZetCode PySide tutorial

This program creates a skeleton of
a classic GUI application with a menubar,
toolbar, statusbar and a central widget.

author: Jan Bodnar
website: zetcode.com
last edited: August 2011
"""

import sys
from PySide import QtGui

class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        textEdit = QtGui.QTextEdit()
        self.setCentralWidget(textEdit)

        exitAction = QtGui.QAction('Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(self.close)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        toolbar = self.addToolBar('Exit')
        toolbar.addAction(exitAction)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Main window')
        self.show()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值