Создание нескольких основных окон

Я пытаюсь написать приложение, которое открывает несколько окон верхнего уровня (основных).

Поскольку виджет без родителя является основным окном (http://qt-project.org/doc/qt-4.8/application-windows.html), Я создал пример программы, которая порождает новое окно при каждом нажатии кнопки.

Я могу получить желаемый результат в C ++:

Window::Window(QWidget *parent):
QWidget(parent) {
QPushButton *btn = new QPushButton("Another one!", this);
connect(btn, SIGNAL(clicked()), this, SLOT(addOne()));
}

void Window::addOne() {
QWidget *nw = new QWidget();
nw->show();
}

И новое пустое окно создается каждый раз, когда я нажимаю кнопку, и программа корректно завершает работу, когда закрывается последнее окно.

Я попробовал то же самое в python3, используя PyQt4, но окна не будут отображаться:

import sys
from PyQt4 import QtCore, QtGui

class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(300, 300, 250, 150)
b = QtGui.QPushButton('Another one!', self)
b.clicked.connect(self.new_window)
self.show()

def new_window(self):
print('Opening new window...')
w = QtGui.QWidget()
w.show()

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())

Сообщение печатается правильно, поэтому оно не является проблемой вызова … Независимо от того, использую ли я python3 или 2, результат будет одинаковым.

Что мне не хватает?

0

Решение

Это из-за вывоз мусора.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]