добавление виджета динамически Python - PullRequest
0 голосов
/ 09 марта 2019

У меня есть два скрипта Python, которые я хочу объединить в одном окне. В основном, добавление виджета в окно, когда кнопка отмечена. это главное окно

from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.checkBox = QtWidgets.QCheckBox(Form)
        self.checkBox.setGeometry(QtCore.QRect(40, 40, 171, 21))
        self.checkBox.setObjectName("checkBox")
        // when checkbox is true add widget

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.checkBox.setText(_translate("Form", "render frame range"))

это виджет, который я хочу добавить

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.lineEdit = QtWidgets.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(20, 120, 113, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(Form)
        self.lineEdit_2.setGeometry(QtCore.QRect(200, 120, 113, 20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(140, 120, 47, 13))
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(30, 160, 131, 31))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "to"))
        self.pushButton.setText(_translate("Form", "Render Sequence"))

Я знаю, что мне нужно привязать виджет к главному окну, но я не знаю как. Когда флажок установлен, я хочу добавить виджет. Если флажок не установлен, я хочу, чтобы виджет был удален. Я видел примеры с C ++, но не Python. Если кто-то может помочь мне или указать мне правильное направление, это было бы здорово.

1 Ответ

0 голосов
/ 09 марта 2019

Вам не нужно добавлять / удалять виджет.Вы можете просто скрыть или показать его в соответствии с состоянием вашего флажка.

Подключите сигнал QCheckBox::clicked к слоту QWidget::setVisible:

class MainWindow(QWidget):
    def __init__(self, parent=None, **kwargs):
        super(MainWindow, self).__init__(parent, **kwargs)
        self.resize(400, 300)
        self.checkBox = QCheckBox("Hide/show", self)
        self.checkBox.setGeometry(QRect(40, 40, 171, 21))

        self.widgetToManage = QLabel("Hello world!", self)
        self.widgetToManage.hide() # the checkbox is unchecked by default.

        # When the checkbox is checked, the widget is visible.
        self.checkBox.clicked.connect(self.widgetToManage.setVisible)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    app.setActiveWindow(window) 
    window.show()
    sys.exit(app.exec_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...