如果未使用functools.partial,则不显示QMainWindow

时间:2015-10-29 12:39:03

标签: python pyqt pyqt4

点击父QMainWindow

中的按钮后,我会显示第二个QMainWindow
def on_click(self):
    window = second_window.MainWindow()
    window.show()

未显示第二个窗口(没有任何错误)。但是如果在第二个窗口中我添加了一行:

self.func = functools.partial(self.some_func)

一切正常。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是您在window范围内创建on_click作为局部变量。只要on_click完成,window属性就会被销毁。

尝试将窗口存储在实例变量中:

def on_click(self):
    self._window = second_window.MainWindow()
    self._window.show()

functools.partial方法可能只是因为您已将其存储在实例中而起作用。