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_())

 如果還有問題的朋友,可以一起交流學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM