关于安装与配置pyqt5的一些问题
目录
1 在anaconda prompt中,显示:'conda' 不是内部或外部命令,也不是可运行的程序或批处理文件
这严格意义上不算是pyqt5的问题,而是环境变量的问题,但就怕哪一天忘记怎么弄了呢?所以还是记下来吧(笑)
右键我的电脑 --> 属性 --> 高级系统设置 --> 高级 --> 环境变量
找到系统变量中的Path变量,点击编辑。将以下路径加到Path中:
你自己装在了哪应该清楚\Anaconda3
你自己装在了哪应该清楚\Anaconda3\Scripts
2 Anaconda安装第三方库,显示:PackageNotFoundError: 'Package missing in current channels'
逐渐远离主题(x
2.1 正常安装第三方库
conda install pyqt5
报错:
PackagesNotFoundError: The following packages are not available from current channels:
- pyqt5
2.2 解决方案
anaconda search -t conda pyqt5
找到一些库,你想要安装哪个,使用如下命令:
anaconda show 第三方库名字
接着它会提示你使用如下命令:
conda install --channel 一大串网址
最后等它安装完即可。
3 转化工具:将ui文件转化为py文件
(终于回归正题!)
File --> Settings --> Tools --> External Tools --> 添加
新增pyuic(UI转换工具。以后想要转换,在ui文件中右键选择 External Tools,选择pyuic即可完成转换):
Name:pyuic
program:pyuic的安装路径 (我的是 D:\ProgramData\Anaconda3\envs\pyqt\Scripts\pyuic5.exe)
parameter:$FileName$ -o $FileNameWithoutExtension$.py
directory: $FileDir$ (最好设置在自己的工作区文件夹下)
新增pyrcc(资源文件转码):
Name:pyrcc
program:pyrcc的安装路径 (我的是 D:\ProgramData\Anaconda3\envs\pyqt\Scripts\pyrcc5.exe)
parameter:$FileName$ -o $FileNameWithoutExtension$.py
directory: $FileDir$
新增Qt Designer(以后就可以在pycharm中打开Qt Designer这个软件了):
Name:Qt Designer
program:Qt Designer.exe
parameter:不填
directory: $FileDir$
4 PyQt5测试代码
从 untitled.ui(我创建了一个QDialog)转化而来的 untitled.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
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(290, 20, 81, 241))
self.buttonBox.setOrientation(QtCore.Qt.Vertical)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.slot1) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
main.py(顺便试一下槽函数是怎么用的):
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip, QPushButton, QApplication, QDialog)
from untitled import *
class MyDialog(QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)
self.setupUi(self)
#槽函数
def slot1(self):
print("hello")
if __name__ == '__main__':
app = QApplication(sys.argv)
un = MyDialog()
un.show()
sys.exit(app.exec_())