为什么ipython无法从交互式控制台正确渲染Qt窗口?

时间:2019-08-16 03:22:01

标签: python pyqt pyqt5 ipython

我在Ubuntu 18.04上使用PyQt5和IPython 7.3.0。我正在从ipython控制台加载此微小的Python模块,该控制台通过--gui=qt5开关或外壳启动后执行的%gui qt5调用。无论哪种情况,它都会显示一个黑色窗口。是IPython的错误,还是我缺少了什么?

from PyQt5.QtWidgets import QApplication, QWidget

class Viewer(QWidget):
    def __init__(self, text):
        super().__init__()      
        self.setWindowTitle('Viewer')        
        self.show()

def view_from_ipython():
    ex = Viewer('Hello')
    import time; time.sleep(5)

上面的模块被命名为demo.py

$ ipython --gui=qt5
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import demo

In [2]: demo.view_from_ipython()

它显示一个黑色的窗口,如下所示。

enter image description here

更新1: 我忘了提到我要以非模式方式显示窗口,这意味着弹出的窗口不应禁止用户与ipython会话进行交互。到目前为止指出的解决方案阻止了交互式会话。我想使它的行为与matplotlib图的绘制工作相同(只是给出一个想法)。

0 个答案:

没有答案