PyQt5入門


 PyQt5 是用來創建Python GUI應用程序的工具包。作為一個跨平台的工具包,PyQt可以在所有主流操作系統上運行(Unix,Windows,Mac)。

本文描述Windows系統下如何安裝Python + PyCharm + PyQt5,並通過PyQt5 采用 兩種方式設計GUI界面。a.直接使用代碼設計界面;b. 先使用QtDesigner進行可視化設計,然后將生成的.ui文件轉換成.py文件。

 

安裝Python + PyCharm + PyQt5

1、安裝Python

訪問官網https://www.python.org/,下載並安裝你的目標Python版本。

 

2、安裝PyQt5

1)進入cmd界面。執行命令 pip install pyqt5 pyqt5-tools ,等待一會兒,命令執行完畢后PyQt5就安裝好了。

在安裝過程中可能會報下面錯誤,找不到對應的pyqt5-tools版本。

  Collecting pyqt5-tools
  Could not find a version that satisfies the requirement pyqt5-tools (from versions: )
No matching distribution found for pyqt5-tools

由於作者電腦上原來安裝了2016年某個版本的python3.5 ,幸運的把pip install pyqt5 pyqt5-tools 一次執行完畢,全部安裝完了。不過后來更新到python3.5.4和python3.7時都遇到了這個問題。python3.5.4在更新PIP到最新版本后,問題貌似也消失了。python3.7沒有再去解決。

2)在python 自帶的IDLE中試驗一下pqyt5是否真的裝好了。

新建文件 firstPython.py 並輸入如下代碼

#####################################

import sys  
  
from PyQt5 import QtWidgets, QtCore  
  
app = QtWidgets.QApplication(sys.argv)  
widget = QtWidgets.QWidget()  
widget.resize(400, 100)  
widget.setWindowTitle("This is a demo for PyQt Widget.")  
widget.show()  
  
exit(app.exec_()) 

#####################################

運行后彈出如下界面,表示PyQt已經正常工作啦。

 

如果不幸沒有彈出GUI窗口,而且提示錯誤:ImportError: DLL load failed: 找不到指定的模塊。

據說這是由於缺少了合適的python3.dll,可以通過去python.org 下載所需版本的python安裝包並安裝,然后從安裝目錄中拷貝python3.dll文件,和自己使用的python3x.dll放在同一級目錄下即可。

作者自己原來安裝的python3.5就是掛在了這一步,然后直接刪了重新安裝python3.5.4,又遇到了上面1)的問題。升級pip版本后莫名過關。建議大家按照上面建議的解決方式操作。

3、安裝PyCharm

1)訪問官網http://www.jetbrains.com/pycharm/download/#section=windows  作者選擇下載並安裝Community版本 ——目前是PyCharm 2018.2.2 Community Edition。

 

2)PyCharm 基本配置:

a. 建立一個新項目:first。 

b.設置默認PyCharm解析器

選擇File | Settings | Project: first | Project Interpreter,設置 Project Interpreter為你使用的python版本

例如 C:\xxxx\AppData\Local\Programs\Python\Python35-32\python.exe

c. 添加第三方庫 

 停留在 Project Interpreter 界面,點擊+,查找並安裝 pyqt5,pyqt5-sip ,pyqt5-tools 。安裝成功后返回,界面應該如下。

 

d.配置PyQt

PyCharm中選擇File | Settings | Tools | External Tools,點擊+ 新建工具, 建立QTdesigner 和 PyUIC工具

QTdesigner:

 

配置兩個關鍵參數:

Program:自己的designer.exe路徑 例如 C:\xxxx\AppData\Local\Programs\Python\Python35-32\Lib\site-packages\pyqt5-tools\designer.exe  

Working directory:$ProjectFileDir$

 

PyUIC:

 

配置三個關鍵參數:

Program:自己的python.exe路徑 例如 C:\xxxx\AppData\Local\Programs\Python\Python35-32\python.exe

Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

Working directory:$ProjectFileDir$

 

工具建立成功后返回ExternalTools界面,如下:

 

返回主界面,Tools->ExternalTools 中新增了QTdesigner 和 PyUIC兩個工具

 

4、PyCharm中通過PyQt5設計GUI界面

1)利用代碼創建GUI界面

新建firstGUI.py,輸入如下代碼

# -*- coding: utf-8 -*-
"""第一個程序"""

from PyQt5 import QtWidgets # 導入PyQt5部件

import sys

app = QtWidgets.QApplication(sys.argv) # 建立application對象

first_window = QtWidgets.QWidget() # 建立窗體對象

first_window.resize(400, 300) # 設置窗體大小

first_window.setWindowTitle("我的第一個pyqt程序") # 設置窗體標題

first_window.show() # 顯示窗體

sys.exit(app.exec()) # 運行程序
###############################################################

選擇Run->Run firstGUI,結果顯示如下界面就成功了。

 

 

2)利用QT Designer代碼生成一個GUI界面 ,並用PyUIC轉換為.py文件。

選擇Tools->ExternalTools->QTdesigner,進入QT Designer界面,第一次會彈出一個GUI創建界面,點擊creat 自動生成一個帶下方按鈕的GUI界面,如下圖。

 

另存該界面為Utitled.ui文件。

返回PyCharm 項目界面,項目列表下多出了這個.ui文件

右鍵單擊Utitled.ui,彈出列表中選擇ExternalTools->PyUIC 就會生成Utitled.ui對應的Utitled.py文件了。內容如下

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

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.11.2
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")

self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
#############################################################################
That's All .Thankyou~

 


免責聲明!

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



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