这是我的代码。我尝试这样做,以便在更改下拉框时,它会动态显示更多或更少的QLineEdits用于输入。这只是最新的测试迭代次数
var time = "21/12/2017 12:30:00 p.m.";
DateTime x = DateTime.ParseExact(time, "dd/MM/yyyy hh:mm:ss tt", null);
答案 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