搜尋此網誌

2016年12月11日 星期日

PyQt5 教學 Part 1: 安裝與開始

最近開始嘗試接觸Qt,但是網路上中文教學還是以Qt4為主要,
在這系列的教學裡面,如果有不太清楚的地方,歡迎互相交流。
如果覺得有想補充的地方也歡迎回覆給我,畢竟我也是才剛起步而已。

另外在大部分的程式,我會採用物件導向的方式,
如果不懂的地方也歡迎回覆發問。



下面就開始介紹如何安裝與開始第一個視窗程式的開發

透過pip安裝Qt5套件
$ pip install pyqt5

安裝完之後即可使用Qt5的函式庫,下面將撰寫一個簡單的空白視窗

first.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget


class MainWindow(QWidget):
    def __init__(self):
        super(self.__class__, self).__init__()
        self.setupUi()
        self.show()

    def setupUi(self):
        self.setWindowTitle("Hello World!")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    MainWindow = MainWindow()
    sys.exit(app.exec_())


執行結果如下


在這個程式裡面我們引用了 sys, QApplication, QWidget

  • sys:用於Qt開始的參數
  • QApplication:負責管理Qt的所有資源(唯一一個)
  • QWidget:在此為我們主要的視窗



接著介紹程式碼內部的運作

class MainWindow(QWidget):

建立一個Class名為MainWindow並且繼承QWidget,有QWidget的所有功能




def __init__(self):
    super(self.__class__, self).__init__()
    self.setupUi()
    self.show()

覆寫 __init__ 這個方法,並且在下一行呼叫 super,
這個方法會去執行原本QWidget的__init__函式

self.setupUi 執行我們在下面撰寫 setupUi(self) 的這個函式,用於預先設定我們的視窗
self.show 顯示視窗




def setupUi(self):
    self.setWindowTitle("Hello World!")

建立setupUi的函示用於設定視窗屬性

self.setWindowTitle("Hello World!")
設定視窗的標題為 Hello World




if __name__ == "__main__":
    app = QApplication(sys.argv)
    MainWindow = MainWindow()
    sys.exit(app.exec_())


第一行判斷式 __name__ 用於代表來源的名稱,
當自己為第一個執行的程式時,名稱就會變成__main__
因此就是判斷 整個程式的進入點如果是從自己開始,就執行程式。

app = QApplication(sys.argv)
新增一個Qt應用程式,管理所有的Qt物件資源
並且傳入sys.argv作為初始化資料

MainWindow = MainWindow()
新增一個MainWindow物件(QWidget物件)

sys.exit(app.exec_())
app.exec_() 進入QApplication程式,也就是說開始運行Qt GUI程式
當app.exec_()執行完畢時,關閉python。



以上就是這整個程式的解說,可以發現用Python寫Qt的視窗程式其實並不複雜
之後有時間將會繼續寫下去

如果有任何疑問或指教,歡迎底下回覆,謝謝。

註:

  • self代表的是 MainWindow 這個Class,因為繼承至QWidget所以也代表Qwidget這個物件
  • 每個Qt程式只會有一個 QApplication 作為管理所有Qt資源的管理程式
PyQt5 教學 Part 2: Layout排版系統