Python 在PyQT中显示QDialog之后,执行代码的惯用方式是什么?

Python 在PyQT中显示QDialog之后,执行代码的惯用方式是什么?,python,qt,pyqt,pyside,qdialog,Python,Qt,Pyqt,Pyside,Qdialog,在使用show()或exec()显示QDialog之后,我需要动态添加一些额外的小部件。我该怎么做?只需在您的小部件上调用show(): #!/usr/bin/env python #-*- coding:utf-8 -*- import sip sip.setapi('QString', 2) sip.setapi('QVariant', 2) from PyQt4.QtCore import * from PyQt4.QtGui import * class testDialogs(Q

在使用
show()
exec()
显示QDialog之后,我需要动态添加一些额外的小部件。我该怎么做?

只需在您的小部件上调用
show()

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)

from PyQt4.QtCore import *
from PyQt4.QtGui import *

class testDialogs(QWidget):
    def __init__(self, parent=None):
        super(testDialogs, self).__init__(parent)

        self.verticalLayout = QVBoxLayout(self)

        self.pushButton = QPushButton(self)
        self.pushButton.setText("Open a Dialog")

        self.pushButton1 = QPushButton(self)
        self.pushButton1.setText("Add a Text Edit")

        self.plainTextEdit = QPlainTextEdit(self)
        self.plainTextEdit.appendPlainText("This is a Widget")

        self.verticalLayout.addWidget(self.pushButton)
        self.verticalLayout.addWidget(self.pushButton1)
        self.verticalLayout.addWidget(self.plainTextEdit)

        self.pushButton.clicked.connect(self.on_pushButton_clicked)
        self.pushButton1.clicked.connect(self.on_pushButton1_clicked)

    @pyqtSlot()
    def on_pushButton_clicked(self):
        dialog = QDialog(self)
        verticalLayout = QVBoxLayout(dialog)

        plainTextEdit = QPlainTextEdit(dialog)
        plainTextEdit.appendPlainText("This is a Dialog")

        buttonBox = QDialogButtonBox(dialog)
        buttonBox.setOrientation(Qt.Horizontal)
        buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
        buttonBox.setObjectName("buttonBox")

        verticalLayout.addWidget(plainTextEdit)
        verticalLayout.addWidget(buttonBox)

        buttonBox.accepted.connect(dialog.close)
        buttonBox.rejected.connect(dialog.close)
        dialog.show()

    @pyqtSlot()
    def on_pushButton1_clicked(self):
        plainTextEdit = QPlainTextEdit(self)
        plainTextEdit.appendPlainText("This is another Text Edit")

        self.verticalLayout.addWidget(plainTextEdit)
        plainTextEdit.show()


if __name__ == "__main__":
    import  sys

    app = QApplication(sys.argv)
    main = testDialogs()
    main.show()
    sys.exit(app.exec_())
只需在小部件上调用
show()

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)

from PyQt4.QtCore import *
from PyQt4.QtGui import *

class testDialogs(QWidget):
    def __init__(self, parent=None):
        super(testDialogs, self).__init__(parent)

        self.verticalLayout = QVBoxLayout(self)

        self.pushButton = QPushButton(self)
        self.pushButton.setText("Open a Dialog")

        self.pushButton1 = QPushButton(self)
        self.pushButton1.setText("Add a Text Edit")

        self.plainTextEdit = QPlainTextEdit(self)
        self.plainTextEdit.appendPlainText("This is a Widget")

        self.verticalLayout.addWidget(self.pushButton)
        self.verticalLayout.addWidget(self.pushButton1)
        self.verticalLayout.addWidget(self.plainTextEdit)

        self.pushButton.clicked.connect(self.on_pushButton_clicked)
        self.pushButton1.clicked.connect(self.on_pushButton1_clicked)

    @pyqtSlot()
    def on_pushButton_clicked(self):
        dialog = QDialog(self)
        verticalLayout = QVBoxLayout(dialog)

        plainTextEdit = QPlainTextEdit(dialog)
        plainTextEdit.appendPlainText("This is a Dialog")

        buttonBox = QDialogButtonBox(dialog)
        buttonBox.setOrientation(Qt.Horizontal)
        buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
        buttonBox.setObjectName("buttonBox")

        verticalLayout.addWidget(plainTextEdit)
        verticalLayout.addWidget(buttonBox)

        buttonBox.accepted.connect(dialog.close)
        buttonBox.rejected.connect(dialog.close)
        dialog.show()

    @pyqtSlot()
    def on_pushButton1_clicked(self):
        plainTextEdit = QPlainTextEdit(self)
        plainTextEdit.appendPlainText("This is another Text Edit")

        self.verticalLayout.addWidget(plainTextEdit)
        plainTextEdit.show()


if __name__ == "__main__":
    import  sys

    app = QApplication(sys.argv)
    main = testDialogs()
    main.show()
    sys.exit(app.exec_())

谢谢你,这有点帮助。您能给我看一些显示QDialog后添加小部件的代码吗?@liamzebedee
QDialog
继承自
QWidget
,以及所有其他Qt用户界面对象(
QMainWindow
QComboBox
,等等)。您可以用
QDialog
替换
QWidget
,或者用任何其他没有布局的小部件运行脚本。谢谢,这有点帮助。您能给我看一些显示QDialog后添加小部件的代码吗?@liamzebedee
QDialog
继承自
QWidget
,以及所有其他Qt用户界面对象(
QMainWindow
QComboBox
,等等)。您可以使用
QDialog
替换
QWidget
,或者使用任何其他没有布局的小部件来运行脚本