Как добавлять и удалять Widgets?
Я хочу добавлять и удалять widgets, но я не знаю как мне это сделать.
Я набросал вот такой код:
import sys
from PyQt5 import QtWidgets
class Label(QtWidgets.QLabel):
def __init__(self, id='0', parent=None):
super(Label, self).__init__(parent)
self.label = QtWidgets.QLabel(self)
self.label.setText('label-{}'.format(id))
class Test(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.resize(500, 500)
self.lay = QtWidgets.QVBoxLayout(self)
self.CheckBox_1 = QtWidgets.QCheckBox(self)
self.CheckBox_2 = QtWidgets.QCheckBox(self)
self.CheckBox_3 = QtWidgets.QCheckBox(self)
self.CheckBox_1.setText('CheckBox_1')
self.CheckBox_2.setText('CheckBox_2')
self.CheckBox_3.setText('CheckBox_3')
self.CheckBox_1.clicked.connect(self.addLabel)
self.CheckBox_2.clicked.connect(self.addLabel)
self.CheckBox_3.clicked.connect(self.addLabel)
self.lay.addWidget(self.CheckBox_1)
self.lay.addWidget(self.CheckBox_2)
self.lay.addWidget(self.CheckBox_3)
def addLabel(self):
if self.sender().isChecked() :
self.label = Label(self.sender().text())
self.lay.addWidget(self.label)
else:
self.lay.removeWidget(self.label)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Test()
w.show()
sys.exit(app.exec_())
Я знаю что вопрос банален, но я не совсем понимаю что я делаю не так?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Как вариант:
import sys
from PyQt5 import QtWidgets
class Label(QtWidgets.QLabel):
def __init__(self, id='0', parent=None):
super(Label, self).__init__(parent)
# self.label = QtWidgets.QLabel(self)
# self.label.setText('label-{}'.format(id))
self.setText('label-{}'.format(id))
class Test(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.resize(500, 500)
self.CheckBox_1 = QtWidgets.QCheckBox(self)
self.CheckBox_2 = QtWidgets.QCheckBox(self)
self.CheckBox_3 = QtWidgets.QCheckBox(self)
self.CheckBox_1.setText('CheckBox_1')
self.label_1 = Label('CheckBox_1')
self.CheckBox_2.setText('CheckBox_2')
self.label_2 = Label('CheckBox_2')
self.CheckBox_3.setText('CheckBox_3')
self.label_3 = Label('CheckBox_3')
self.CheckBox_1.clicked.connect(lambda: self.addLabel(self.CheckBox_1, self.label_1))
self.CheckBox_2.clicked.connect(lambda: self.addLabel(self.CheckBox_2, self.label_2))
self.CheckBox_3.clicked.connect(lambda: self.addLabel(self.CheckBox_3, self.label_3))
self.lay = QtWidgets.QVBoxLayout(self)
self.lay.addWidget(self.CheckBox_1)
self.lay.addWidget(self.CheckBox_2)
self.lay.addWidget(self.CheckBox_3)
self.lay.addStretch(1)
self.lay.addWidget(self.label_1)
self.lay.addWidget(self.label_2)
self.lay.addWidget(self.label_3)
self.lay.addStretch(1)
self.label_1.hide()
self.label_2.hide()
self.label_3.hide()
def addLabel(self, cb, lb):
if cb.isChecked() :
lb.show()
else:
lb.hide()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Test()
w.show()
sys.exit(app.exec_())
