PyQt5 GUI應用程式工具包入門(2)

來源:互聯網
上載者:User


下面我們從一個簡單的登入對話方塊來瞭解PyQt5的開發過程。
PyQt5支援兩種介面開發方式:一種是在QtDesigner中設計介面,各種控制項直接通過拖動添加;一另種是直接撰寫介面代碼,通過代碼控制介面上的控制項。下面我們將分別通過這兩種方式建立一個如圖1所示的登陸對話方塊。 


圖1 一個簡單的登陸對話方塊 QtDesigner設計介面

經過上一篇文章的設定後,我們可通過功能表列的“Tool”→“QT Tool”→“Qt Designer”開啟QtDesigner程式,進行介面設計,如圖2。 


圖2 QtDesinger介面

由於我們只需建立一個簡單的視窗,故選擇模板為“Widget”,單擊“建立”,即進入視窗編輯介面,如圖3所示。 

圖3 建立視窗

我們只需將所需的控制項拖入即可,這裡我們需要2個Push Button(Buttons中),2個Label(Display Widget中)和2個Line Edit(Import Widgets中)。拖入後大致安排好位置(如圖4)。

 圖4 視窗初步設計

在視窗空白處單擊滑鼠右鍵,選擇“布局”→“柵格布局”,即可將控制項大致排列好。

然後,在對象查看器中單擊對象,即可在屬性編輯對話方塊設定控制項屬性。這個項目中我們進行如下設定:

設定Form的“WindowTitle”為“登入介面”,

設定兩個Label的“text”分別為“使用者名稱”和“密碼”,

設定兩個按鈕的“text”分別為確定和取消。 設定完後將視窗調到適當大小(圖5)。


圖5 最終視窗

最後,將本視窗以ui檔案儲存在專案檔夾,選擇此檔案,單擊滑鼠右鍵,選擇“QT Tool”→“PyUIC”,即可產生py檔案。
直接撰寫介面代碼

在上一節產生的ui檔案是需要轉換成py檔案來使用的。故,我們也可以直接撰寫介面代碼,來進行開發。
代碼如下:

 

# -*- coding: utf-8 -*-

from PyQt5.QtWidgets import *

class Ui_Form(QWidget):

 def __init__(self):

   super().__init__()

   self.setWindowTitle("登入介面")

   self.resize(200,100)

   lay=QFormLayout()

   self.setLayout(lay)

   Lab1=QLabel("使用者名稱")

   Line1=QLineEdit()

   Lab2 = QLabel("密碼")

   Line2 = QLineEdit()

   OkB=QPushButton("確定")

   CB=QPushButton("取消")

   lay.addRow(Lab1,Line1)

   lay.addRow(Lab2, Line2)

   lay.addRow(OkB,CB)

代碼說明:

第2行,匯入PyQt5的控制項,PyQt5的各種控制項一般均放在PyQt5.QtWidgets模組中,本行代碼匯入了所有的控制項,也可只匯入本程式用到的控制項,即寫作“from PyQt5.QtWidgets import QWidget,QFormLayout,QLabel,QLineEdit,QPushButton”,熟知Python文法的人可能有其他寫法,本篇不再贅述;

第4行,建立Ui_Form類,從QWidget基類派生;

第5、6行,建構函式,完整寫法為:

def init(self,parent=None):
super(Ui_form,self).init(parent)
而在Python3中可以簡化為第5、6行的形式;

第7行,設定視窗名稱;

第8行,設定視窗尺寸;

第9、10行,設定總體布局;

第12~19行,建立控制項對象;

第21~3行,將控制項加入布局中。 運行程式

以上產生的視窗類別可以在同一個py檔案中書寫main函數進行調用。不過筆者不建議這樣做。尤其是第一種方法中需要修改視窗時,同時也要重建py檔案,還需重寫main函數。
我們可以另寫一個main.py,來運行對話方塊。代碼如下:

 

# -*- coding: utf-8 -*-

from PyQt5 import QtWidgets

from Dlg import Ui_Form

import sys

if __name__ == "__main__":

   app = QtWidgets.QApplication(sys.argv)

   myshow = Ui_Form()

   myshow.show()

   sys.exit(app.exec_())  

代碼說明:

第3行,從對話方塊檔案中匯入類,Dlg為對話方塊檔案名稱;

第6行,主程式定義在這行語句下面,輸入“main”然後按“Tab”鍵可快速輸入;

運行main.py,即可運行這個對話方塊程式。

讚賞作者


本文作者

小溪

土木工程碩士畢業,碩士期間利用Python進行資料處理和ABAQUS二次開發,現就職於上海某土木工程諮詢公司,從事土木工程軟體開發工作。

點擊閱讀原文,領取爬蟲課程100元代金券,限額50名

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.