如何在窗口中添加新标签?

时间:2015-04-27 07:49:00

标签: python button pyqt

我有一个窗口。有一个按钮。当用户点击此按钮时,在窗口中必须消失按钮并出现新标签和新按钮。 你明白了吗?

# -*- coding: utf-8 -*-

from PyQt4 import QtGui, QtCore
import sys
def starting():
    quest1 = QtGui.QWidget()
    quest1.setWindowTitle('New')
    quest1.resize(900, 600)
    quest1.show()
    quest1.exec()


testing = QtGui.QApplication(sys.argv)

window = QtGui.QWidget()
window.setWindowTitle('Title')
window.resize(900, 600)

MainText = QtGui.QLabel('<p align="center"; style="font-size: xx-large">Text</p>')
Mainbox = QtGui.QVBoxLayout()

# buttons
start = QtGui.QPushButton('Start')
quit = QtGui.QPushButton('Exit')
start.setFixedSize(70, 40)
quit.setFixedSize(70, 40)

buttons = QtGui.QHBoxLayout()
buttons.addWidget(start)
buttons.addWidget(quit)
# /buttons


Mainbox.addWidget(MainText)
Mainbox.addLayout(buttons)

window.setLayout(Mainbox)

QtCore.QObject.connect(quit, QtCore.SIGNAL('clicked()'), QtGui.qApp, QtCore.SLOT("quit()"))
QtCore.QObject.connect(start, QtCore.SIGNAL('clicked()'), starting)

window.show()
sys.exit(testing.exec_())

我认为,我做错了,不需要打开新窗口,但我不知道我必须做什么。

1 个答案:

答案 0 :(得分:2)

Qt用户界面是根据小部件构建的。许多小部件都可以生孩子。如果添加/删除子项,UI将相应更新。

上面代码的问题在于您没有将新窗口小部件添加到父窗口。所以会发生什么:你创建小部件,强制它出现,函数结束,局部变量(newwindow)最终在垃圾桶上,Python清理垃圾 - &gt;小部件再次被删除。

对于要停留的窗口,您需要将其添加到某个父窗口小部件(可能是窗口)。如果要替换现有小部件,则需要自行删除它们。