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:Python27python.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", "世界你好"))