gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:21:33 25 4
gpt4 key购买 nike

这是我的代码。我试图使其在您更改下拉框时,它将动态显示更多或更少的 QLineEdits 用于输入。这只是最新的测试迭代

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit,
QInputDialog, QApplication, QComboBox, QFrame)

import numpy as np


class GUI(QWidget):

def __init__(self):
super().__init__()

self.initgui()

def initgui(self):
#
# Set up GUI
#
self.setGeometry(100, 100, 400, 400)
self.move(300, 300)
combobox = QComboBox(self)
for i in range(1, 10, 1):
combobox.addItem(str(i + 1))
combobox.activated[str].connect(self.comboboxchanged)
self.setWindowTitle("Testing Easy Setup")
self.show()

def comboboxchanged(self, text):
frame = QWidget(self)
frame.hide()
for num in range(0, int(text), 1):
QLineEdit(frame).move(60, num * 19)
frame.show()

if __name__ == '__main__':
app = QApplication(sys.argv)
gui = GUI()
sys.exit(app.exec_())

最佳答案

问题是,当您将父级传递给小部件时,它会被放置在相对于父级的 0, 0 位置,在您的情况下 QFrame 位于 QComboBox 因为两者都位于 0, 0 位置。正确的做法是使用布局。另一方面,您必须在为其添加新小部件之前消除小部件,我们创建了一个消除这些项目的函数。

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_())

关于python - 如何动态添加/删除元素中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47915414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com