G
N
I
D
A
O
L

关于安装与配置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_())
---EOF---
posted @ 2022-05-27 18:44  漫舞八月(Mount256)  阅读(480)  评论(0编辑  收藏  举报