1 PySide6 BUG: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
我在运行 pySide6 hello world
程序时弹出了这个bug.
根据bug可以看出是因为当前python环境缺少 Qt platform plugin 下的库。
1 我的解决方法
一开始我使用了添加Qt platform plugin 环境路径的方法,的确解决了,但感觉这样很麻烦。
于是我觉得出现这样的原因是我当前anaconda 的虚拟环境安装了太多东西,导致包冲突了,所以不能搜索到 Qt platform plugin 路径。最可能冲突的原因我在当前环境还安装了 PyQt5 。
解决办法是重新建一个 python 虚拟环境,之后再重装PySide6。我是使用anaconda 新建环境的。
这样就解决了这个bug。
2 解决办法2 :添加Qt platform plugin 路径
要添加路径首先需要知道 Qt platform plugin 的路径,
一般来说是 python 安装路径下的 Lib\site-packages\PySide6\plugins\platforms
使用代码可以这样临时添加路径
import os,sys
import PySide6
dirname = os.path.dirname(PySide6.__file__)
plugin_path = os.path.join(dirname, 'plugins', 'platforms')
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path
当然也可以在电脑上配置全局路径。
我不想用这种方式的原因是担心之后打包为可执行文件的时候不好处理。
3 PySide6 hello world代码
import sys
import random
from PySide6 import QtCore, QtWidgets, QtGui
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.hello = ["你好 世界","Hello World","Hallo Welt", "Hei maailma", "Hola Mundo", "Привет мир"]
self.button = QtWidgets.QPushButton("Click me!")
self.text = QtWidgets.QLabel("你好 世界",
alignment=QtCore.Qt.AlignCenter)
self.layout = QtWidgets.QVBoxLayout(self)
self.layout.addWidget(self.text)
self.layout.addWidget(self.button)
self.button.clicked.connect(self.magic)
@QtCore.Slot()
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())
参考
亲测有效,一招解决错误:This application failed to start because not Qt platform plugin could be initialized.