PyQt4中的菜单与工具栏
单击此处可查看英文原版。
在接下来的PyQt4教程中,我们将学习如何创建菜单和工具栏。菜单是位于菜单栏的一组命令的集合。工具栏是在应用程序中对应常用命令的按钮。
主窗口
QtGui.QMainWindow类为应用程序提高了主窗口。它为应用程序提高了典型的窗口框架,包括状态栏、工具栏和菜单栏。
状态栏
以下代码展示了在QtGui.QMainWindow部件的帮助下创建状态栏。状态栏是用于显示状态信息的部件。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
# 调用QtGui.QMainWindow类的statusBar()方法获取
# 状态栏。第一次调用statusBar()函数时,会创建状态栏。
# 后续调用时会返回状态栏对象。showMessage()将指定
# 的消息在状态栏中显示。
self.statusBar().showMessage('Ready')
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Statusbar')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
菜单栏
菜单栏是GUI应用程序中常见的一部分。它是一组位于不同菜单下的命令集合。(Mac OS处理菜单的方式有所不同。为了获取相同的结果,可以加入:menubar.setNativeMenuBar(False)。)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
# QtGui.QAction是关于菜单栏、工具栏或自定义快捷键动作的抽象。
# 创建指定图标和'&Exit'标签的动作。
exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)
# 为该动作定义快捷键。
exitAction.setShortcut('Ctrl+Q')
# 当鼠标停留在菜单上时,在状态栏显示该菜单的相关信息。
exitAction.setStatusTip('Exit application')
# 选定特定的动作,发出触发信号。该信号与QtGui.QApplication部件的quit()方法
# 相关联,这将会终止应用程序。
exitAction.triggered.connect(QtGui.qApp.quit)
self.statusBar()
# menuBar()方法创建菜单栏。我们创建了一个文件菜单,并将退出动作添加在其后。
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(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()
在上面的例子中,我们创建了只有一个菜单的菜单栏。这个菜单包含一个关闭应用程序的动作,用户可以通过Ctrl+Q的快捷键执行该动作。我们同样也创建了状态栏。
工具栏
菜单将我们在应用程序中使用的所有命令进行分组。工具栏则为我们提供了常用命令的快速访问。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
# 类似于上面菜单栏的例子,我吗创建一个QAction对象。该对象拥有一个标签、图标以及
# 一个快捷键,并将QtGui.QMainWindow的quit()方法与之绑定。
exitAction = QtGui.QAction(QtGui.QIcon('exit24.png'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(QtGui.qApp.quit)
# 创建工具栏,并将QAction对象添加到工具栏中。
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Toolbar')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
综合
在本节的最后,我们创建一个带有菜单栏,工具栏和状态栏的应用程序窗口。同时,在窗体的中央创建了一个编辑文本框部件。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
# 创建文本输入框,并将其放置在QtGui.QMainWindow
# 的中央。它将占据窗体剩下的所有空间。
textEdit = QtGui.QTextEdit()
self.setCentralWidget(textEdit)
exitAction = QtGui.QAction(QtGui.QIcon('exit24.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)
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('MainWindow')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
本文主要介绍了PyQt4中关于菜单栏、状态栏和工具栏的创建。