iT邦幫忙

2021 iThome 鐵人賽

DAY 1
4
Software Development

【今年還是不夠錢買psQQ,不如我們用PyQt自己寫一個】系列 第 1

【沒錢買ps,PyQt自己寫】Day 1 - 安裝 PyQt,建立自己的第一支 PyQt5 程式

  • 分享至 

  • xImage
  •  

前言

今年算是拖到最後一天最後一刻才開賽...
因為疫情的關係今年實在有點忙不過來,
因此早在兩個月前就先為此做了提前準備的計畫,
既然要寫就要如期完賽,如果直接開賽可能撐個沒幾天就因忙碌而斷賽就太可惜了。
因此有些屯了一點點文章(不過其實也不算多...),
希望在這段忙到爆炸的時間還是能夠給讀者們完整的30天系列。

PyQt是使用python寫出來的視覺化界面(GUI)程式,
會結合我去年的【錢不夠買ps的我,只好用OpenCV來修圖了!】結合兩項技術,
今年看能夠自己幹出一個 photoshop 做到什麼程度XDD
(還是我目標放太遠,應該先做個小畫家之類的XDDD)

看完這篇文章你會得到的成果圖

https://ithelp.ithome.com.tw/upload/images/20210916/20120424ZG022kMLAT.png

這次是我初學 PyQt5 的一些筆記,
每天都學一點點,至於整理的部分就慢慢一個個來
畢竟知道 PyQt5 有很多東西XD

此篇文章的範例程式碼 github

https://github.com/howarder3/ironman2021_PyQt5_photoshop/tree/main/day01_install_and_hello

安裝

先安裝 PyQt5

新的方法 (之後到 OpenCV 章節時,可避免一些問題):

建議使用 conda 的方式安裝,

打開終端機的對應 conda 環境輸入

conda install pyqt 

舊的方法 (之後可能會有些問題)

打開終端機輸入

pip install PyQt5

至於前面步驟「可能」還有:

  • 安裝 python
  • 安裝 anaconda (optional,看你想不想要管理 python 環境)

這部分就先不多說明,網路已經很多好文章了!

範例程式碼

PyQt5 可以學習的東西太多了! 我一開始學也是超級混亂的!!!
所以我們慢慢來!
先什麼都不管,直接跑程式碼,至少我們要確認「有沒有安裝成功」!

複製以下程式碼,直接跑就對了

應該要「能正常執行」,不然就是你沒安裝成功 PyQt5

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

def window():
   app = QApplication(sys.argv)
   widget = QWidget()

   textLabel = QLabel(widget)
   textLabel.setText("Hello World!")
   textLabel.move(110,85)

   widget.setGeometry(50,50,320,200)
   widget.setWindowTitle("PyQt5 Example")
   widget.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

執行

到這邊相信大家都懂了XD,就一如往常的執行這份 python 吧!
(檔名請自行更換)

python hello.py

結果

  • windows 版本

https://ithelp.ithome.com.tw/upload/images/20210916/20120424ZG022kMLAT.png

不論是任何版本,複製上面程式碼應該都要看到這個結果,
不然請再去檢查你的 PyQt5 為何沒有安裝成功!
(沒安裝成功的原因太多種了,這邊很難細述)

說明

之後還會有更詳細的說明,但是既然這邊都提到了還是要交代一下!

如果想看更詳細的說明,這邊可以先跳過,日後文章會再來細講

建立一個視窗應用,並且宣告一個 QWidget 物件

這邊基本上寫法不太會改

  • app 代表「系統」的視窗程式,
  • widger 代表一個 QWidget() 的物件 (我們開發的視窗)
app = QApplication(sys.argv)
widget = QWidget()

在 widget 新增一個文字物件

這邊我們使用的是 QLabel,之後會在細講這東西,
我們將這東西存入 textLabel 這個變數中,並且作了文字與位置的設定

textLabel = QLabel(widget)
textLabel.setText("Hello World!")
textLabel.move(110,85)

在 widget 設定視窗大小,設定標題名稱,並顯示於畫面上

這邊就是如何設定我們的 QWidget 視窗,

  • setGeometry 可以決定視窗大小
  • setWindowTitle 可以決定視窗名稱
  • show 將視窗顯示
widget.setGeometry(50,50,320,200)
widget.setWindowTitle("PyQt5 Example")
widget.show()

結束視窗應用

這邊是在偵測使用者呼叫的視窗是否有被關閉,
就是我們一般視窗「右上角(windows) 的叉叉」,偵測到關閉程式後,
讓程式順利結束運行,如果沒有這行就等於程式直接結束,
也不會等使用者把視窗關閉XD

sys.exit(app.exec_())

小結

到這邊,看起來很簡單(嗎?),不過這就是我們初探 PyQt5 的第一步囉!
(到這邊,距離大致掌握 PyQt5 還好遙遠... 太多東西要學了)

Reference


★ 本文也同步發於我的個人網站(會有內容目錄與顯示各個小節,閱讀起來更流暢):【PyQt5】Day 1 – 安裝 PyQt,建立自己的第一支 PyQt5 程式


下一篇
【沒錢買ps,PyQt自己寫】Day 2 - 利用 Qt designer 建立第一支有自己介面的 PyQt5 程式
系列文
【今年還是不夠錢買psQQ,不如我們用PyQt自己寫一個】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

1
佑佑來了
iT邦新手 5 級 ‧ 2021-09-16 22:13:00

推推,今天終於看到了。
(雖然有在你的個人網站看過了)

嗡嗡 iT邦新手 4 級 ‧ 2021-09-16 22:20:22 檢舉

好快XDD。今年有點忙,30天份量的文,又要維持品質只能把戰線提早了~ (雖然提早的部分也是不太夠用XDD)

0
shiaobin
iT邦新手 4 級 ‧ 2022-11-13 02:47:28

如果要用PyQt6的話,把PyQt5改成PyQt6,以及把app.exec_()改成app.exec()即可,供大家參考。

我要留言

立即登入留言