3

我正在尝试使用PySide2fromSpyder 3.2.8Python 3.6.4Anaconda 中的macOS 10.13.4.

尝试 N°1

在看到这个stackoveflow 页面和这个github 页面后,我将图形后端从更改InlineAutomaticin Python > Preferences > IPython Console > Graphics,并尝试运行以下脚本(脚本 N°1):

脚本 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

这里有 matplotlibipython的类似报告问题,但它没有帮助我(或者我无法正确实现它)。然后我尝试通过以下方式更改脚本N°1来实现此页面关于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_()

尝试 N°2

Inline中选择Python > Preferences > IPython Console > Graphics。当我运行脚本 N°2时,应用程序启动并print something打印到控制台。关闭应用程序时,我进入Out[1]: 0了控制台。但是,当我再次运行脚本时,控制台中没有出现错误消息,但应用程序的窗口没有出现

尝试 N°3

这次在Automatic中选择Python > Preferences > IPython Console > Graphics。当我第一次运行脚本 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

Automatic中选择Python > Preferences > IPython Console > Graphics。当我将行从更改为后运行脚本 N°1PySide2.QtWidgets import *from PyQt5.QtWidgets import *:应用程序没有启动,我收到以下错误消息

Out[1]: -1

尝试 N°5

Inline中选择Python > Preferences > IPython Console > Graphics。当我将行从更改为 后运行脚本 N°1PySide2.QtWidgets import *from PyQt5.QtWidgets import *:应用程序启动并print something打印到控制台。我关闭了应用程序并进入Out[1]: 0了控制台。但是,当我再次运行脚本时,控制台中没有出现错误消息,但应用程序的窗口没有出现

注意这个问题是那个问题的延续

4

1 回答 1

1

此处为 Spyder 维护者)由于该ipykernel软件包(Spyder 用于在其控制台中运行代码)截至 2018 年 5 月不支持 PySide2 的事件循环(如此处所示,您将无法无论您尝试什么,都在 Spyder 中运行 PySide2 代码。

备注

  1. Automatic后端尝试为您选择一个合适的事件循环,按以下顺序:Qt5、Qt4、Tk 和 Inline 。这就是为什么它不适用于您的情况。
  2. 每次在 Spyder 中更改图形后端时,都需要重新启动要在其中运行代码的控制台的内核。这是因为每个控制台会话只能使用一个后端(这是由 强加的限制ipykernel,而不是我们强加的限制) . 从您的问题中可以清楚地看出您没有这样做。
  3. 我们知道在需要重新启动内核时我们无法通知用户。我们将尝试在 2019 年发布的下一个主要版本(Spyder 4)中解决这个问题。
  4. 如果您已经了解qtpy,请使用它来开发您的应用程序,而不是直接使用 PySide2。这样,您可以使用 PyQt5 在 Spyder 中进行开发,但使用 PySide2 进行部署,因为qtpy它负责与任何可用的绑定无缝协作。
于 2018-05-11T01:10:45.553 回答