【发布时间】:2018-05-09 18:19:57
【问题描述】:
我正在尝试在 macOS 10.13.4 中的 Anaconda 中使用 PySide2 和 Spyder 3.2.8 和 Python 3.6.4 运行应用程序。
尝试 N°1
在看到 stackoveflow page 和 github page 之后,我在 Python > Preferences > IPython Console > Graphics 中将图形后端从 Inline 更改为 Automatic 并尝试运行以下脚本(script N°1 em>):
脚本 N°1
import sys
from PySide2.QtWidgets import *
# Create a Qt application
app = QApplication.instance()
if app is None:
print("print something")
app = QApplication(sys.argv)
# Create a Label and show it
label = QLabel("Hello World")
label.show()
# Enter Qt application main loop
app.exec_()
但运行后得到以下错误信息:
Importing PySide2 disabled by IPython, which has
already imported an Incompatible QT Binding: pyqt5
here with matplotlib 和 here with ipython 报告了类似的问题,但它对我没有帮助(或者我无法正确实施)。然后我尝试通过以下方式更改脚本N°1来实现this page about qtpy的内容:
脚本 N°2
import os
os.environ['QT_API'] = 'pyside2'
from qtpy.QtWidgets import *
import sys
# Create a Qt application
app = QApplication.instance()
if app is None:
print("print something")
app = QApplication(sys.argv)
# Create a Label and show it
label = QLabel("Hello World")
label.show()
# Enter Qt application main loop
app.exec_()
第 2 次尝试
在Python > Preferences > IPython Console > Graphics 中选择了Inline。当我运行 script N°2 时,应用程序启动并且我在控制台中打印了print something。关闭应用程序时,我在控制台中收到了Out[1]: 0。但是,当我再次运行脚本时,控制台中没有出现错误消息,但应用程序的窗口没有出现
第 3 次尝试
这次在Python > Preferences > IPython Console > Graphics 中选择了Automatic。当我第一次运行 script N°2 时,应用程序没有启动并且我收到以下错误消息
/anaconda3/lib/python3.6/site-packages/qtpy/__init__.py:178: RuntimeWarning: Selected binding "pyside2" could not be found, using "pyqt5"
'using "{}"'.format(initial_api, API), RuntimeWarning)
Out[2]: -1
尝试 N°4
在Python > Preferences > IPython Console > Graphics 中选择了Automatic。当我在将行从 PySide2.QtWidgets import * 更改为 from PyQt5.QtWidgets import * 后运行 script N°1 时:应用程序没有启动,我收到以下错误消息
Out[1]: -1
第 5 次尝试
在Python > Preferences > IPython Console > Graphics 中选择了Inline。当我在将行从 PySide2.QtWidgets import * 更改为 from PyQt5.QtWidgets import * 后运行 script N°1 时:应用程序启动,我将 print something 打印到控制台。我关闭了应用程序并在控制台中获得了Out[1]: 0。但是,当我再次运行脚本时,控制台中没有出现错误消息,但应用程序的窗口没有出现
注意这个问题是that question的延续
【问题讨论】:
-
pyqt5 一切正常吗?
-
谢谢@ekhumoro。不,它不适用于 pyqt5。我在使用 pyqt5 时编辑了问题并编写了尝试和输出
-
我通过在
Atom中使用包scripts和hydrogen运行script N°1 找到了解决问题的方法。这个解决方案并不完美,因为app window出现在后面(Atom-python-IDE window后面)==> 您必须在每次打开Atom-python-IDE window时移动/最小化它才能访问app window。但是,使用此解决方案,您不必在点击退出按钮后手动终止/删除应用程序
标签: python python-3.x spyder pyside2