PyQt4入門學習筆記(二)



之前第一篇介紹了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()

運行效果如下:
image1

我們注意到這次我們的窗口是通過繼承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()    

運行效果如下:
image2

在上面的例子里,我們創建了一個帶有一個菜單的菜單欄。這個菜單欄帶有一個關閉的功能。並且有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.QApplicationquit()方法。之后這個方法會結束整個應用。

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

運行截圖:
image3

在上面這個例子里,我們創建了一個簡單的工具欄。這個工具欄有一個動作:當觸發時關閉整個應用。

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

運行截圖如下:
image4

到這里我們基本學習了菜單欄,工具欄,狀態欄的添加。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM