之前第一篇介紹了pyqt4的大小,移動位置,消息提示。這次我們介紹菜單和工具欄
QtGui.QmainWindow
這個類可以給我們提供一個創建帶有狀態欄、工具欄和菜單欄的標准的應用。
狀態欄##
狀態欄是展示狀態信息的部件。
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
ZetCode PyQt4 tutorial
This program creates a statusbar.
author: Jan Bodnar
website: zetcode.com
last edited: September 2011
"""
import sys
from PyQt4 import QtGui
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
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()
運行效果如下:
我們注意到這次我們的窗口是通過繼承QtGui.QmainWindow
這個類得到的,利用它的方法加載了一個狀態欄。
菜單欄##
下面的代碼可能在OS X上運行效果有所不同,我們可以加入下面這條語句:
menubar.setNativeMenuBar(False)
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
ZetCode PyQt4 tutorial
This program creates a menubar. The
menubar has one menu with an exit action.
author: Jan Bodnar
website: zetcode.com
last edited: August 2011
"""
import sys
from PyQt4 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(QtGui.qApp.quit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Menubar')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
運行效果如下:
在上面的例子里,我們創建了一個帶有一個菜單的菜單欄。這個菜單欄帶有一個關閉的功能。並且有Ctrl+Q的快捷鍵來完成。
exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
一個QtGui.QAction
是一個從菜單欄、工具欄、或者快捷鍵提取動作的方法。在上面三行里,我們創建了一個帶有“Exit”標簽的動作。並且這個動作被定義了一個快捷鍵。第三行創建了一個狀態氣泡消息,當我們把鼠標移動到菜單欄的時候浮現出來。
exitAction.triggered.connect(QtGui.qApp.quit)
當我們選定了規定的動作后,會產生一個觸發信號。這個信號會連接着QtGui.QApplication
的quit()
方法。之后這個方法會結束整個應用。
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
menuBar()
方法創建了一個菜單欄,我們在這里創建了一個文件菜單,並且添加了結束動作。
工具欄##
工具欄是針對頻繁的操作提供快速的方法。
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
ZetCode PyQt4 tutorial
This program creates a toolbar.
The toolbar has one action, which
terminates the application if triggered.
author: Jan Bodnar
website: zetcode.com
last edited: September 2011
"""
import sys
from PyQt4 import QtGui
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
exitAction = QtGui.QAction(QtGui.QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(QtGui.qApp.quit)
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Toolbar')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
運行截圖:
在上面這個例子里,我們創建了一個簡單的工具欄。這個工具欄有一個動作:當觸發時關閉整個應用。
exitAction = QtGui.QAction(QtGui.QIcon('diuqiu.jpg'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(QtGui.qApp.quit)
與之前菜單欄那個例子相似,我們創建了一個帶有標簽,圖標和快捷鍵的動作。並且同樣是通過信號來將動作和quit()
方法連接起來
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
我們創建了一個菜單欄,並且添加了一個離開動作。
把他們合在一起##
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
ZetCode PyQt4 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: September 2011
"""
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('diqiu.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)
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()
運行截圖如下:
到這里我們基本學習了菜單欄,工具欄,狀態欄的添加。