调用show()后QWidget没有显示

时间:2011-11-23 13:12:56

标签: python pyqt pyqt4 show

在我的应用程序中,即使show()返回isVisible,我也会在调用true后显示未显示的QWidget。

此小部件是从主应用程序窗口的事件创建的。但是当它自己开始时,即作为应用程序中唯一的小部件时,它会正常显示。

任何人都知道可能导致此行为的原因是什么?

我的应用程序中的其他小部件通常只显示这个小部件给我带来麻烦。它实际上用于在先前版本的Qt4下工作(不记得是哪个)。

小部件的代码是here

更新:Windows似乎出现并立即被销毁。

1 个答案:

答案 0 :(得分:4)

相关代码位于hidx/GUI/main.py

@pyqtSignature("")
def on_actionScatterplot_Matrix_activated(self):
    ...
    spm = scatmat.ScatMat(pars, self.currentdbname)
    print "==>", spm.pw.isVisible()
    spm.pw.hide()
    spm.pw.showMaximized()
    print spm.pw.size()
    print "==>", spm.pw.isVisible()

@pyqtSignature("int")
def on_rowStart_valueChanged(self, p0):
    ...

on_actionScatterplot_Matrix_activated中,您创建了ScatMat的实例,但不保留对它的引用。因此,窗口将被简要显示,然后在函数完成后立即进行垃圾收集。