2015-10-29 2 views
1

я показываю второй QMainWindow после щелчка на кнопке в родителе QMainWindowне QMainWindow показан, если functools.partial не используется

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

Второго окна не показано (без каких-либо ошибок). Но если во втором окне я добавляю строку:

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

Все работает правильно.

Почему это происходит?

ответ

1

Я думаю, проблема в том, что вы создаете window в качестве локальной переменной внутри области on_click. Как только on_click закончит, атрибут window будет уничтожен.

Try хранение окна в переменном экземпляре:

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

functools.partial подхода, вероятно, работает только потому, что вы уже храните его в экземпляре.

+0

Да, это правда. Теперь все работает правильно. Спасибо вам. – HotIceCream

Смежные вопросы