如何动态添加/删除元素中的元素?

时间:2017-12-20 22:42:54

标签: python python-3.x pyqt5

这是我的代码。我尝试这样做,以便在更改下拉框时,它会动态显示更多或更少的QLineEdits用于输入。这只是最新的测试迭代次数

var time = "21/12/2017 12:30:00 p.m.";
DateTime x = DateTime.ParseExact(time, "dd/MM/yyyy hh:mm:ss tt", null);  

1 个答案:

答案 0 :(得分:1)

问题在于,当您将父级传递给窗口小部件时,它将相对于父级置于0,0位置,在您的情况下,QComboBox位于import sys from PyQt5.QtWidgets import * def clearLayout(lay): while lay.count() > 0: item = lay.takeAt(0) widget = item.widget() if widget: widget.deleteLater() del item class GUI(QWidget): def __init__(self): super().__init__() self.initgui() def initgui(self): lay = QHBoxLayout(self) vlay1 = QVBoxLayout() combobox = QComboBox(self) combobox.addItems([str(i) for i in range(2, 11)]) vlay1.addWidget(combobox) vlay1.addItem(QSpacerItem(20, 245, QSizePolicy.Minimum, QSizePolicy.Expanding)) self.vlay2 = QVBoxLayout() lay.addLayout(vlay1) lay.addLayout(self.vlay2) self.comboboxchanged(combobox.currentText()) combobox.activated[str].connect(self.comboboxchanged) self.setWindowTitle("Testing Easy Setup") self.show() def comboboxchanged(self, text): clearLayout(self.vlay2) for num in range(0, int(text)): self.vlay2.addWidget(QLineEdit(self)) self.vlay2.addItem(QSpacerItem(20, 245, QSizePolicy.Minimum, QSizePolicy.Expanding)) if __name__ == '__main__': app = QApplication(sys.argv) gui = GUI() sys.exit(app.exec_()) 之上,因为两者都是在0,0位置。正确的是使用布局。另一方面,你必须在为它添加新窗口小部件之前删除它们,我们创建一个消除这些项目的函数。

sed