我试图写一个应用程序,打开多个顶级(主要)窗口。你知道吗
因为没有父窗口的小部件是一个主窗口(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还是python2,结果都是一样的。你知道吗
我错过了什么?你知道吗
因为garbage collection。你知道吗
相关问题 更多 >
编程相关推荐