Pyqt4學習筆記-簡單案例


官方文檔:http://zetcode.com/gui/pyqt4/

中文文檔:http://www.qaulau.com/books/PyQt4_Tutorial/index.html

QtCore:核心的非GUI功能,對時間、文件、目錄、各種數據類型、流、網址、媒體類型、線程或進程進行處理

QtGui:圖形化窗口組件和及相關類。包括如按鈕、窗體、狀態欄、滑塊、位圖、顏色、字體等等

QtHelp:包含了用於創建和查看可查找的文檔的類

QtNetwork:包括網絡編程的類。用來編寫TCP/IP和UDP的客戶端和服務器

QtOpenGL:使用OpenGL庫來渲染3D和2D圖形

QtScript:包含了使PyQt應用程序使用JavaScript解釋器編寫腳本的類

QtSql:提供操作數據庫的類

QtSvg:提供了顯示SVG文件內容的類。可縮放矢量圖形(SVG)

QtTest:包含了對PyQt應用程序進行單元測試的功能

QtWebKit:實現了基於開源瀏覽器引擎WebKit的瀏覽器引擎

QtXml:處理XML文件的類,該模塊提供了SAX和DOM API的接口

QtXmlPatterns:包含的類實現了對XML和自定義數據模型的XQuery和XPath的支持

phonon:包含的類實現了跨平台的多媒體框架,可以在PyQt應用程序中使用音頻和視頻內容

QtMultimedia:提供了低級的多媒體功能,通常更多使用 phonon 模塊

QtAssistant:包含的類允許集成 Qt Assistant 到PyQt應用程序中,提供在線幫助。

QtDesigner:包含的類允許使用PyQt擴展 Qt Designer 。

Qt:綜合了上面描述的模塊中的類到一個單一的模塊中。

這樣做的好處是你不用擔心哪個模塊包含哪個特定的類,壞處是加載進了整個Qt框架,從而增加了應用程序的內存占用。

uic:包含的類用來處理.ui文件,該文件由Qt Designer創建,用於描述整個或者部分用戶界面。

它包含的加載.ui文件和直接渲染以及從.ui文件生成Python代碼為以后執行的類。

先記錄簡單的,以下代碼可顯示一個基本的window: 

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

import sys
from PyQt4 import QtGui


def main():

    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()

    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

from PyQt4 import QtGui,基本的GUI組件都存放在QtGui這個模塊

app = QtGui.QApplication(sys.argv),
每個Pyqt的程序都必須創建一個application對象,application在 QtGui 模塊中,sys.argv 參數是命令行中的一組參數。

w = QtGui.QWidget(),創建窗口對象,QWidget窗口組件是PyQt4中所有用戶界面對象的基類,這里直接使用QWidget默認的構造。

app.exec_()其實就是QApplication的方法,原來這個exec_()方法的作用是“進入程序的主循環直到exit()被調用”,如果沒有這個方法,運行的時候窗口會閃退,所以show是有發揮作用的,但沒有使用exec_(),所以沒有進入程序的主循環就直接結束了。於是修改代碼:

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

import sys
from PyQt4 import QtGui


def main():

    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()

    app.exec_()


if __name__ == '__main__':
    main()

不用sys.exit(app.exec_()),只使用app.exec_(),程序一樣可以正常運行,但是關閉窗口后進程卻不會退出,嘗試print輸出app.exec_()的結果,返回0,於是再做修改:

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

import sys
from PyQt4 import QtGui


def main():

    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    
    app.exec_()
    sys.exit(0)

if __name__ == '__main__':
    main()
這樣的話,運行時打開窗口也正常,退出時進程也可以結束了。所以才可以這么用sys.exit(app.exec_())。
增加圖標:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui


class Icon(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.setGeometry(300, 300, 250, 150)
        # 設置初始位置
        self.setWindowTitle('Icon')
        # window標題
        self.setWindowIcon(QtGui.QIcon('icons/web.png'))
        # 圖標文件位置

app = QtGui.QApplication(sys.argv)
icon = Icon()
icon.show()
sys.exit(app.exec_())

  圖標顯示效果
移動到視窗范圍內觸發提示信息:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui


class Tooltip(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Tooltip')

        self.setToolTip('This is a <b>QWidget</b> widget')
        # 設置提示信息
        QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10))
        # 顯示字體,在MAC下無效

app = QtGui.QApplication(sys.argv)
tooltip = Tooltip()
tooltip.show()
sys.exit(app.exec_())

  提示效果
退出時彈出確認消息框:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui


class MessageBox(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('message box')

    def closeEvent(self, event):

        # 關閉窗口的事件觸發消息框詢問,並設置消息框標題,提示信息,選擇按鍵
        reply = QtGui.QMessageBox.question(self, 'Message',
                                           "Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

        if reply == QtGui.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

app = QtGui.QApplication(sys.argv)
qb = MessageBox()
qb.show()
sys.exit(app.exec_())

  提示效果

設置窗口居中顯示:

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

import sys
from PyQt4 import QtGui

class Center(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.setWindowTitle('center')
        self.resize(250, 150)
        # 重新設置大小
        self.center()

    def center(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        # 獲取屏幕分辨率
        size =  self.geometry()
        # 獲取組件大小
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)


app = QtGui.QApplication(sys.argv)
qb = Center()
qb.show()
sys.exit(app.exec_())

 文檔中簡單的使用范例,添加注釋后做個記錄


免責聲明!

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



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