2015-04-27 62 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清除垃圾 - >小部件再次被刪除。

要留下窗口,您需要將其添加到某個父窗口小部件(可能是窗口)。如果你想替換現有的小部件,你需要自己刪除它們。