2015-04-27 64 views
0

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

# -*- 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_()) 

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

+0

你需要更清楚地解释你想达到的目标。现有窗口是什么样的?您需要添加/删除/更改哪些*特定的小部件?您发布的当前代码与您所提问题无关。 – ekhumoro

+0

我编辑过。也许它更清晰。 –

+0

您需要发布您已有的实际代码,并说明您遇到困难的部分。你不应该指望人们为你编写所有的代码。 – ekhumoro

回答

2

Qt UIs是从小部件构建的。许多小部件可以有孩子。如果你添加/删除孩子,UI将相应地更新。

上述代码的问题是您不会将新小部件添加到父项。那么会发生什么情况是:您创建了小部件,强制它显示,函数结束,局部变量(newwindow)最终放到垃圾箱中,Python清除垃圾 - >小部件再次被删除。

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