例子:状态栏、菜单栏和工具栏

import sys
from PyQt4 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(QtGui.QIcon(), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.close) bar1=self.statusBar()
     bar1.showMessage('Ready') 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()

运行效果如下:

下面解释上面的代码:

class Example(QtGui.QMainWindow):

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

注意Example类继承于QtGui.QMainWindow

QtGui.QMainWindow类提供了创建应用主窗口的方法,这使得用状态栏(statusbar)、菜单栏(menubar)、工具栏(toolbar)创建一个传统的应用框架成为可能。

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

这里我们创建了一个文本编辑框(text edit)部件。我们把它设置成QtGui.QMainWindow的中央部件,中央部件占据了各种栏之外所有的剩余空间

        exitAction = QtGui.QAction(QtGui.QIcon(), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.close) menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)

在上面这个示例中,我们创建了只由一个菜单组成的菜单栏。这个菜单也仅仅拥有一个选项【这里原文是action,为了方便理解,我们下面将这个action有时翻译成选项。】:结束应用。而且我们给这个选项添加了一个快捷键:Ctrl+Q。

Qt.Gui.QAction是这个行为的一个抽象。在上面这三行中,我们创建了有着自己图标和名字一个选项,而且,我们给这个行为定义了一个快捷键。第三行创建了一个status tip,它的作用是鼠标放在这个选项上时,可以在状态栏中显示出状态“Exit application”。

当我们选择了这个选项时,一个触发信号(triggered signal)被发出了。这个信号和QtGui.QApplication部件的quit()方法相联系(connect),所以信号发出后,程序终止。

menuBar()方法创建了一个菜单栏。这里我们在菜单栏的基础上创建了一个file菜单,并在里面添加了exit选项

  bar1=self.statusBar()
bar1.showMessage('Ready')

为了得到一个状态栏,我们调用了QtGui.QMainWindow类中的statusBar()方法【注意Example是继承QMainWindow的】。函数调用创建了一个状态栏,接下来的showMessage()函数调用返回了一个状态栏对象,showMessage()里面的参数是显示在状态栏中的。

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

我们创建了一个工具栏并且给里面加入了一个选项, 就是菜单选项exitAction

下面是PyQt5的相同功能的例子(macOS版本)

 import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QAction, QMainWindow
from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
textEdit = QTextEdit()
self.setCentralWidget(textEdit) exitAction = QAction(QIcon(), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.close) bar1=self.statusBar()
bar1.showMessage('Ready') menubar = self.menuBar()
menubar.setNativeMenuBar(False) 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 = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_()) if __name__ == '__main__':
main()

Mac OS 对待菜单栏有些不同。为了获得全平台一致的效果,我们可以在代码中加入一行:menubar.setNativeMenuBar(False)

效果:

Python pyQt4/pyQt5 学习笔记2(状态栏、菜单栏和工具栏)的更多相关文章

  1. Python pyQt4/pyQt5 学习笔记1(空白窗口,按钮,控件事件,控件提示,窗体显示到屏幕中间,messagebox)

    PyQt4是用来编写有图形界面程序(GUI applications)的一个工具包.PyQt4作为一个Python模块来使用,它有440个类和超过6000种函数和方法.同时它也是一个可以在几乎所有主流 ...

  2. Python pyQt4/PyQt5 学习笔记4(事件和信号)

    信号 & 槽 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QWidget,QLCDNumber,QS ...

  3. Python pyQt4/PyQt5 学习笔记3(绝对对位,盒布局,网格布局)

    本节研究布局管理的内容. (一)绝对对位  import sys from PyQt4 import QtGui class Example(QtGui.QWidget): def __init__( ...

  4. PyQt5学习笔记-从主窗体打开一个子窗体

    PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...

  5. PyQt4入门学习笔记(三)

    # PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...

  6. PyQt4入门学习笔记(一)

    PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...

  7. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  8. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  9. Python Built-in Function 学习笔记

    Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...

随机推荐

  1. Java注解Annotation学习笔记

    一.自定义注解 1. 使用关键字 @interface 2. 默认情况下,注解可以修饰 类.方法.接口等. 3. 如下为一个基本的注解例子: //注解中的成员变量非常像定义接口 public @int ...

  2. Php反转字符串函数

    From: http://blog.csdn.net/happy664618843/article/details/5861138

  3. 使用 SharpSvn 执行 svn 操作的Demo

    1. SharpSvn简介 SharpSvn.dll 是为.Net 2.0-4.0+ 应用提供的 Subversion Client API,更多详细介绍请见 https://sharpsvn.ope ...

  4. 【NLP】Stanford

    http://web.stanford.edu/class/cs224n/syllabus.html https://www.youtube.com/watch?v=OQQ-W_63UgQ&l ...

  5. UGUI优化

    https://zhuanlan.zhihu.com/p/21913747 https://www.jianshu.com/p/3edce67cb473 http://www.ceeger.com/f ...

  6. scala中获取Map中key和value的方法

    val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8) // 获取所有的key v ...

  7. 更好的使用JAVA线程池

    这篇文章分别从线程池大小参数的设置.工作线程的创建.空闲线程的回收.阻塞队列的使用.任务拒绝策略.线程池Hook等方面来了解线程池的使用,其中涉及到一些细节包括不同参数.不同队列.不同拒绝策略的选择. ...

  8. 源码分析一(Iterator、Collection以及List接口)

    1:Iterable接口,实现这个接口的类对象可以进行迭代 package java.lang; import java.util.Iterator; /** * 实现这个接口的类所创建的对象可以进行 ...

  9. linux中sudo如何读取标准输入作为密码,避免每次都输入密码?

    需求描述: 今天想要在生产环境中,弄自动部署的脚本,但是现在呢,需要sudo权限,每次都要输入.就想看sudo如何能从标准输入读取密码. 操作过程: 1.原来的方法 [deployer@testvm ...

  10. application/x-www-form-urlencoded 的contentType,POST数据内容过大,导致tomcat的request取不到参数

    如题, 可通过设置tomcat的connector的参数 server.xml中的connector中加上属性 maxPostSize="20971520" maxPostSize ...