Python图形界面学习记录2、解决Pycharm安装Pyside2出现的问题

1、使用Anaconda,在pycharm下安装pyside2。安装方法有下面几种:

  1. 使用pycharm里面的file->settings>project interrupt进行安装大概率会失败,提示时间超时timeout。
  2. 使用pycharm下的终端进行安装,也大概率会失败,因为下载速度太慢,这个包有100多M
    pip install PySide2   # For the latest version on PyPi
  3. 通过http下载

    pip install --index-url=http://download.qt.io/snapshots/ci/pyside/5.12/latest pyside2 --trusted-host download.qt.io
  4. 通过官网下载 pip install 对应的pyside2版本.whl

推荐使用第3种方法下载。

2、终端提示下载安装成功,运行示例,发现提示缺少shiboke库,直接在终端pip install shiboke。

3、运行官方示例程序(示例程序在最后面),发现提示没有安装PySide2库,打开项目下的venv/Lib/site-packages/,发现没有Pyside2,使用终端重新执行安装命令,提示该库已经存在。

这时,我们去anaconda的安装路径下找到Pyside2的文件夹,如果anaconda是默认安装路径,那么路径为C:\ProgramData\Anaconda3\Lib\site-packages,找到PySide2,把该文件夹和PySide2-5.15.0.dist-info文件夹一起复制到项目下的venv/Lib/site-packages/文件夹下,继续找到shiboke2和shiboken2-5.15.0.dist-info文件夹,复制到项目下的site-packages文件夹下。

  Pycharm在项目上右键选择Reload form Disk,发现项目下的venv/Lib/site-packages/已经有了Pyside2和shiboke2的包。打开project interrupt,可以看到这两个包也有了。

4、继续尝试运行示例程序,发现提示Qt平台插件没有初始化。

此时,我看网上的解决办法有两种选择,一种打开环境变量,在用户变量里面添加,但是,我选择这种办法没有成功,还是有相同的错误提示。

另外一种方法是,打开项目下的Pyside2文件夹下的__init__.py文件,添加代码:(需要注意的是如果修改的是anaconda路径下的__init__.py文件,会提示错误)

保存,运行程序。成功了。

示例程序:

import sys
import random
from PySide2 import QtCore, QtWidgets, QtGui


class MyWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        self.hello = ["Hallo Welt", "Hei maailma", "Hola Mundo", "Привет мир"]

        self.button = QtWidgets.QPushButton("Click me!")
        self.text = QtWidgets.QLabel("Hello World")
        self.text.setAlignment(QtCore.Qt.AlignCenter)

        self.layout = QtWidgets.QVBoxLayout()
        self.layout.addWidget(self.text)
        self.layout.addWidget(self.button)
        self.setLayout(self.layout)

        self.button.clicked.connect(self.magic)


    def magic(self):
        self.text.setText(random.choice(self.hello))


if __name__ == "__main__":
    app = QtWidgets.QApplication([])

    widget = MyWidget()
    widget.resize(800, 600)
    widget.show()

    sys.exit(app.exec_())

 如果还有问题的朋友,可以一起交流学习。

posted @ 2020-06-05 13:18  不知道说什么才好  阅读(3335)  评论(0编辑  收藏  举报