PyQt5入門

 PyQt5 是用來建立Python GUI應用程序的工具包。做爲一個跨平臺的工具包,PyQt能夠在全部主流操做系統上運行(Unix,Windows,Mac)。python

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

 

安裝Python + PyCharm + PyQt5app

一、安裝Python工具

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

 

二、安裝PyQt5this

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-toolscode

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

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版本後莫名過關。建議你們按照上面建議的解決方式操做。

三、安裝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兩個工具

 

四、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~

相關文章
相關標籤/搜索