【问题标题】:How to add new label in window? [closed]如何在窗口中添加新标签? [关闭]
【发布时间】:2015-04-27 07:49:00
【问题描述】:

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

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

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

【问题讨论】:

  • 您需要更清楚地解释您要达到的目标。现有的窗口是什么样的?您需要添加/删除/更改哪些特定小部件?您发布的当前代码与您提出的问题无关。
  • 我编辑了。也许更清楚。
  • 您需要发布您已经拥有的实际代码,并说明您遇到困难的部分。您不应该期望人们为您编写所有代码。
  • 好的,我将发布我的实际代码。但是,我不需要所有代码,我想了解我必须使用什么算法。
  • 尤里卡!!!我学会了如何添加新按钮(或标签)。像这样的代码: def starting(): buttonnew = QtGui.QPushButton('New button') Mainbox.addWidget(buttonnew)

标签: python button pyqt


【解决方案1】:

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

上面代码的问题是您没有将新小部件添加到父级。所以发生的事情是:创建小部件,强制它出现,函数结束,局部变量(newwindow)最终进入垃圾箱,Python 清理垃圾箱 -> 小部件再次被删除。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 2019-10-16
    • 2023-03-11
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多