簡體   English   中英

無法在Spyder中看到由PySide2創建的應用程序窗口

[英]Unable to see app windows created by PySide2 in Spyder

我正在嘗試使用Spyder 3.2.8 PySide2macOS 10.13.4中的Anaconda中的Python 3.6.4運行應用程序。

嘗試N°1

在看過這個stackoveflow頁面和這個github頁面后,我在Python > Preferences > IPython Console > Graphics中將我的圖形后端從Inline更改為Automatic ,我嘗試運行以下腳本( 腳本N°1 ):

腳本編號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

這里有類似的matplotlib報告問題, 這里有ipython,但它沒有幫助我(或者我無法正確實現)。 然后我嘗試通過以下方式更改腳本N°1來實現此頁面關於qtpy的內容:

腳本編號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 *之后我運行腳本N°1 from PyQt5.QtWidgets import * :應用程序沒有啟動,我收到以下錯誤消息

Out[1]: -1

嘗試N°5

Python > Preferences > IPython Console > Graphics選擇Inline 當我從PySide2.QtWidgets import *from PyQt5.QtWidgets import *之后我運行了腳本N°1 from PyQt5.QtWidgets import * :應用程序啟動並且我print something打印到控制台的內容。 我關閉了應用程序並在控制台中Out[1]: 0 但是,當我再次運行腳本時,控制台中不會顯示任何錯誤消息,但應用程序的窗口不會顯示

NB這個問題的延續了這個問題

這里Spyder的維護者 )由於ipykernel包(用於通過Spyder的運行在控制台代碼)不具有PySide2事件循環支持,截至5月/ 2018(可以看出的在這里 ),你將無法無論你嘗試什么 ,在Spyder中運行PySide2代碼。

備注

  1. Automatic后端嘗試按此順序為您選擇合適的事件循環:Qt5,Qt4,Tk和Inline。 這就是為什么它不適用於你的情況。
  2. 每次在Spyder中更改Graphics后端時,都需要重新啟動要運行代碼的控制台內核。這是因為每個控制台會話只能使用一個后端(這是ipykernel強加的限制,而不是我們)。 你的問題很明顯,你沒有這樣做。
  3. 我們知道當需要重新啟動內核時,我們無法通知用戶。 我們將嘗試在我們的下一個主要版本(Spyder 4)中解決這個問題,將於2019年發布。
  4. 如果您已經了解qtpy ,請使用它來開發您的應用,而不是直接使用PySide2。 這樣你可以使用PyQt5在Spyder中進行開發,但是可以使用PySide2進行部署,因為qtpy負責與任何可用的綁定無縫協作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM