python+PyQt5寫界面很方便,記錄下個人配置環境過程。。。。
安裝軟件:
- pycharm2017
- Qt5.9.6
- python3.6.6/python2.7.15
配置PyQt5:
python3
pip3 install PyQt5
python2
pip2.7 install python-qt5
注:據說PySide2好用,開源免費,所以很多人都有安裝;這個也很簡單,直接pip install PySide2
Windows平台的很多人安裝完都會出現運行錯誤,這里總結下個人經驗:
1.Windows7出現無法加載動態鏈接庫,基本關機一天,第二天起來電腦就正常可以了,還不行的話就要安裝一些微軟的底層庫如VS系列依賴庫(鏈接:https://pan.baidu.com/s/10nyUovLGfJoZ4lAnTmAPmw 提取碼:i78l );windows10應該就不會出現這樣的情況
2.出現其他錯誤,可能是缺少sip庫,安裝python3 PyQt5時是會自動安裝的,所以應該是不會有問題;但python2可能要我們自己手動安裝sip,pip install sip/python-sip,這個可以自己去嘗試
3.建議安裝科學環境anaconda,第三方庫特別豐富
配置pycharm:
配置QTDesigner
配置PyUIC
Program:
E:\Python27\python.exe
Parameters:
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory:
$FileDir$
將UI文件轉為.py文件
打開UI.py文件
主文件
這里有一點需要注意:
因為我們同時安裝了PyQt5和PySide2,所以我們只能任選其中一個進行導入,且主文件和UI文件導入的包必須一致,不能一個導入PySide2,一個導入PyQt5
#hello.py
#-*-coding:utf-8-*-
from PyQt5 import QtCore,QtGui,QtWidgets from PyQt5.QtCore import QTimer from PyQt5.QtWidgets import QDialog,QMessageBox from UI import *
import sys import os import numpy as np import matplotlib.pyplot as plt import threading class TonyFrame(QDialog): # **************************************************************#
#initial function
def __init__(self,parent=None): try: super(TonyFrame,self).__init__(parent) self.ui = Ui_Form() self.ui.setupUi(self) except: print ("__init__ except fail") #self.ShowErroeMessage("__init__ except fail")
app = QtWidgets.QApplication(sys.argv) myTonyFrame = TonyFrame() myTonyFrame.show() myTonyFrame.exec_()
#UI.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'hello.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! #from PySide2 import QtWidgets,QtGui,QtCore
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(339, 207) self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(120, 80, 81, 41)) font = QtGui.QFont() font.setPointSize(15) self.label.setFont(font) self.label.setObjectName("label") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "世界你好"))