gpt4 book ai didi

python - 在 Spyder 中无法看到 PySide2 创建的应用程序窗口

转载 作者:行者123 更新时间:2023-11-28 18:12:42 24 4
gpt4 key购买 nike

我正在尝试使用 Spyder 3.2.8 中的 PySide2 和 Anaconda 中的 Python 3.6.4macOS 10.13.4

尝试 N°1

看到这个之后stackoveflow page还有这个github page我在 Python > Preferences > IPython Console > Graphics 中将图形后端从 Inline 更改为 Automatic 并尝试运行以下脚本(脚本 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

有类似的报告问题here with matplotlibhere with ipython但它对我没有帮助(或者我无法正确实现)。然后我尝试执行this page about qtpy的内容通过按以下方式更改脚本 N°1:

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

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

尝试 N°3

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

尝试 N°5

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

注意这个问题是that question的延续

最佳答案

(这里是 Spyder 维护者)自 ipykernel 包(Spyder 使用它在其控制台中运行代码)到 2018 年 5 月没有对 PySide2 的事件循环支持(可能是看到 here ),您将无法在 Spyder 中运行 PySide2 代码,无论您尝试什么

注释:

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

关于python - 在 Spyder 中无法看到 PySide2 创建的应用程序窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50259785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com