自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt for Python學(xué)習(xí)筆記—應(yīng)用程序初探

開(kāi)發(fā) 后端
本文詳細(xì)介紹如何在 Window 平臺(tái)上用純代碼方式(不借助 Qt Designer 工具)來(lái)開(kāi)發(fā)一個(gè)簡(jiǎn)單的 Qt for Python 入門(mén) GUI 應(yīng)用程序(含詳細(xì)的代碼解析),讓讀者有個(gè)基本的感覺(jué),供各位 Qt for Python 的初學(xué)者們參考。

前言

本文詳細(xì)介紹如何在 Window 平臺(tái)上用純代碼方式(不借助 Qt Designer 工具)來(lái)開(kāi)發(fā)一個(gè)簡(jiǎn)單的 Qt for Python 入門(mén) GUI 應(yīng)用程序(含詳細(xì)的代碼解析),讓讀者有個(gè)基本的感覺(jué),供各位 Qt for Python 的初學(xué)者們參考。

注:本系列將會(huì)以 PySide6 為例進(jìn)行介紹,原則上同樣適用于 PyQt6(只需將代碼中導(dǎo)入語(yǔ)句的 PySide6 替換為 PyQt6 即可)。

1. 簡(jiǎn)介

既然開(kāi)發(fā)環(huán)境已經(jīng)準(zhǔn)備就緒,那就讓我們通過(guò)開(kāi)發(fā)一個(gè)簡(jiǎn)單的示例程序來(lái)首次探索它。

本示例程序雖然簡(jiǎn)單,但會(huì)涉及到如下內(nèi)容,希望能幫助初學(xué)者對(duì)使用 PySide6 開(kāi)發(fā) Python GUI 應(yīng)用程序代碼框架有個(gè)初步的印象。

  • 如何導(dǎo)入 PySide6 模塊(或類(lèi))
  • 如何創(chuàng)建一個(gè)應(yīng)用程序(QApplication)對(duì)象
  • 如何創(chuàng)建一個(gè)標(biāo)簽(QLabel)對(duì)象作為主窗口,并在構(gòu)造時(shí)設(shè)置其相關(guān)屬性,使用 Qt 樣式表設(shè)置標(biāo)簽屬性。
  • 如何設(shè)置主窗口(即標(biāo)簽)標(biāo)題
  • 如何顯示主窗口(即標(biāo)簽)
  • 如何運(yùn)行應(yīng)用程序

2. 示例目標(biāo)及原型

我們確定該應(yīng)用程序所設(shè)想達(dá)到的目的,并給出其原型。

一、示例目標(biāo):

本示例目標(biāo)是創(chuàng)建一個(gè) Python GUI 應(yīng)用程序,其主窗體中(水平和垂直)居中顯示一段藍(lán)色的文本信息,隨著窗口的拉伸,該文本大小、顏色保持不變,但其位置仍然在主窗體中保持(水平和垂直)居中。主窗體標(biāo)題為“PySide6 示例程序”。

二、示例原型:

在進(jìn)行 GUI 應(yīng)用程序編碼之前,一般建議先勾畫(huà)出 GUI 框架(窗體及各部件的布局等)。本示例原型如下:

 

 

示例原型

 

3. 示例代碼及運(yùn)行

一、編輯代碼

利用代碼編輯器編輯示例代碼,并保存為文件(如:C:\MyPySide6\MyPySide6App1.py)。

 

  1. from PySide6.QtWidgets import (QApplication, QLabel) 
  2.  from PySide6.QtCore import Qt 
  3.   
  4.  app = QApplication([]) 
  5.   
  6.  label = QLabel("用 PySide6 開(kāi)發(fā)的第一個(gè) GUI 應(yīng)用程序!", alignment=Qt.AlignCenter) 
  7.  label.setStyleSheet("color: blu e; font: bold; font-size: 15px;"
  8.  label.setWindowTitle("PySide6示例程序1"
  9.  label.show() 
  10.   
  11.  app.exec_() 

二、運(yùn)行程序

從控制臺(tái)終端通過(guò)命令方式(或直接在 Visual Studio Code 上點(diǎn)擊主窗體上運(yùn)行按鈕)來(lái)運(yùn)行該示例程序(通常要先進(jìn)入代碼所在目錄下):

C:\MyPySide6> python MyPySide6App1.py

順利的話應(yīng)該會(huì)出現(xiàn)以下程序窗口(可以試著拉伸一下窗口看看效果):

 

 

程序運(yùn)行窗口

 

怎么樣?感覺(jué)還不錯(cuò)吧,簡(jiǎn)簡(jiǎn)單單8行 Python 代碼,就能生成一個(gè)看上去還湊合的 GUI 應(yīng)用程序了。相信可以大大增強(qiáng)您接下來(lái)的 Qt for Python 開(kāi)發(fā)之旅信心吧。

4. 代碼解析

什么?上面的代碼看不懂! 沒(méi)關(guān)系,我們才剛起步,很多知識(shí)還沒(méi)學(xué)呢。那下面我就對(duì)上述代碼進(jìn)行一個(gè)較為詳細(xì)的解析,希望能幫助您理解和掌握這些代碼。

(1)首先,導(dǎo)入相關(guān)模塊(或類(lèi))

  1. from PySide6.QtWidgets import (QApplication, QLabel) 

PySide6 模塊中的子模塊提供對(duì)相關(guān) Qt API 的訪問(wèn)。由于本示例后續(xù)代碼中會(huì)用到 PySide6.QtWidgets.QApplication 類(lèi)和 PySide6.QtWidgets.QLabel 類(lèi),所以要從 PySide6.QtWidgets 模塊導(dǎo)入 QApplication 類(lèi)、QLabel 類(lèi)。

注:還有其他幾種導(dǎo)入方式:

注1:可以根據(jù)個(gè)人習(xí)慣選擇具體的導(dǎo)入方式。本人傾向于選擇最開(kāi)始的導(dǎo)入方式。

    1. # 從PySide6.QtWidgets模塊導(dǎo)入所有的類(lèi),后續(xù)代碼可以直接使用相關(guān)類(lèi) 
    2.  from PySide6.QtWidgets import * 
    3.   
    4.  # 導(dǎo)入PySide6.QtWidgets模塊,后續(xù)代碼可以直接使用相關(guān)類(lèi) 
    5.  import PySide6.QtWidgets 
    6.   
    7.  # 從PySide6庫(kù)中導(dǎo)入QtWidgets模塊,后續(xù)代碼在使用相關(guān)類(lèi)時(shí),需要加上該類(lèi)對(duì)應(yīng)的模塊名 
    8.  from PySide6 import QtWidgets 
  • 注2:在 PySide6 中,一般而言,QtXxxx 代表為 Qt 模塊,QXxxxxx 代表為 Qt 模塊中的類(lèi)。
  • 注3:關(guān)鍵詞 import 后可以跟單個(gè)或多個(gè)類(lèi)(用逗號(hào)隔開(kāi)),可以使用括號(hào),也可以不使用括號(hào)。
  • 注4:如果想使用 PyQt6 模塊,那么只需將代碼中導(dǎo)入語(yǔ)句的 PySide6 替換為 PyQt6 即可。

(2)其次,創(chuàng)建一個(gè)應(yīng)用程序?qū)ο?/strong>

  1. app = QApplication( [] ) 

使用 QApplication 類(lèi)創(chuàng)建一個(gè)應(yīng)用程序?qū)嵗龑?duì)象app,括號(hào)內(nèi)的[]表示構(gòu)造時(shí)不含傳遞參數(shù)。

  • 注1:QApplication 是管理 Qt GUI 應(yīng)用程序的控制流程和主要設(shè)置的類(lèi)。任何 Qt GUI 應(yīng)用程序都必須包含一個(gè) QApplication 類(lèi)的實(shí)例對(duì)象。對(duì)于非 GUI 的 Qt 應(yīng)用程序,可以使用 QCoreApplication 類(lèi)。
  • 注2:由于 Qt 可以從命令行接收參數(shù),因此在構(gòu)造時(shí)可以將任何參數(shù)傳遞給 QApplication 對(duì)象(但要注意需要導(dǎo)入 sys 模塊)

 

  1. import sys 
  2. app = QApplication( sys.argv ) 

(3)接著,創(chuàng)建一個(gè)標(biāo)簽對(duì)象作為主窗體

 

  1. label = QLabel("用 PySide6 開(kāi)發(fā)的第一個(gè) GUI 應(yīng)用程序!", alignment=Qt.AlignCenter) 
  2. label.setStyleSheet("color: blue; font: bold; font-size: 15px;"

通常會(huì)使用 QMainWindow 類(lèi)、或 QWidget 類(lèi)或 QDialog 類(lèi)來(lái)創(chuàng)建一個(gè)應(yīng)用程序的主窗體。本示例中為簡(jiǎn)化直接使用 QLabel 類(lèi)創(chuàng)建一個(gè)標(biāo)簽對(duì)象 label 作為本應(yīng)用程序的主窗體,并在構(gòu)造時(shí)對(duì)該標(biāo)簽的內(nèi)容和對(duì)齊方式進(jìn)行初始化設(shè)置,然后使用 QLabel 類(lèi)的 setStyleSheet() 方法設(shè)置標(biāo)簽文本的顏色、粗體和字體大小屬性:

  • ——文本內(nèi)容:“用 PySide6 開(kāi)發(fā)的第一個(gè) GUI 應(yīng)用程序!”
  • ——文本位置:(水平和垂直)居中
  • ——文本顏色:藍(lán)色
  • ——字體:粗體
  • ——字體大?。?5像素

(4)再接著,設(shè)置主窗體(即標(biāo)簽)標(biāo)題

  1. label.setWindowTitle("PySide6 示例程序"

調(diào)用 QLabel 類(lèi)的 setWindowTitle() 方法設(shè)置主窗體(即標(biāo)簽)的標(biāo)題("PySide6 示例程序")。

(5)然后,顯示主窗體(即標(biāo)簽)

  1. label.show() 

調(diào)用 QLabel 類(lèi)的 show() 方法來(lái)顯示主窗體(即標(biāo)簽)。

(6)最后,運(yùn)行應(yīng)用程序

  1. app.exec_() 

執(zhí)行 QApplication 類(lèi)的 exec_() 方法,將使得 Qt GUI 進(jìn)入一個(gè)主事件循環(huán),直到程序中調(diào)用 exit()、quit() 或關(guān)閉應(yīng)用程序的主窗口時(shí)才會(huì)結(jié)束。

注:在主事件循環(huán)開(kāi)始后,它將會(huì)接收用戶(hù)界面事件以及其他事件源的事件,并向相應(yīng)的窗口進(jìn)行分發(fā)和處理。此外,它還完成 Qt 應(yīng)用程序的初始化和應(yīng)用程序運(yùn)行結(jié)束后的善后處理,并提供會(huì)話管理。

結(jié)束語(yǔ)

本系列介紹如何在 Python 中使用 Qt for Python 進(jìn)行 GUI 應(yīng)用程序開(kāi)發(fā)。

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2011-06-14 14:57:06

QT Python GUI

2010-08-10 15:26:38

Flex應(yīng)用程序

2009-04-12 08:45:32

Symbian諾基亞移動(dòng)OS

2011-06-09 09:12:12

QT symbian

2010-08-18 09:23:19

Flash Lite移動(dòng)應(yīng)用程序開(kāi)發(fā)

2010-02-26 09:55:22

Python應(yīng)用程序

2011-05-03 09:14:45

QtOvi商店Symbian

2011-09-07 16:36:00

Qt Widget

2011-09-09 17:24:39

Qt Webkit模塊

2009-07-14 18:10:38

Swing應(yīng)用程序框架

2011-10-13 16:34:30

MeeGoQt插件

2011-06-09 09:31:40

Qt 實(shí)例

2021-09-26 08:30:31

Python應(yīng)用程序代碼

2010-01-28 09:44:08

C++應(yīng)用程序

2009-08-24 16:02:10

C# Windows應(yīng)

2011-07-05 17:07:46

Qt 插件 模塊

2011-06-21 11:10:28

Qt Embedded

2011-07-05 16:59:15

Qt 動(dòng)態(tài) 鏈接庫(kù)

2011-12-07 12:01:31

ibmdw

2010-02-22 17:46:57

Python應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)