gpt4 book ai didi

python - 如何删除动态生成的复选框?

转载 作者:行者123 更新时间:2023-12-05 06:06:08 25 4
gpt4 key购买 nike

所以我有一个 pyqt5 GUI,它根据保存在目录中的 JSON 文件的标题生成复选框。我的下一步是让它在用户选中一个框时删除该复选框,然后删除 JSON 文件。

目前我生成的复选框如下:

        for x in self.list:
layout.addWidget(QCheckBox(x),row,0)
row+=1

由于我没有将每个复选框分配给一个对象,我将如何检查每个复选框的状态,然后为它分配一个 Action ?

因为我正在学习讨论我的想法:

我希望我可以使用 Signals 来检测信号何时从整个小部件传输,然后使用删除目录中与生成信号的对象共享名称的任何文件的函数插入它。

是否还有更好的方法来生成复选框?

最佳答案

要存储小部件以便稍后您可以访问它们,请创建一些容器,List 将完美地完成:

self.checkboxes = []
...
checkbox = QCheckBox("Iam checkbox number: {}".format(len(self.checkboxes))) #Create checkbox

self.vbox.addWidget(checkbox) #Add it to layout
self.checkboxes.append(checkbox) #Store it for later use in List

要删除它们,您可以使用 .deleteAfter() 方法:

self.checkboxes[-1].deleteLater() #[-1] gives us the last element and .deleteLater() gets rid of the widget GUI wise.
self.checkboxes.pop() #Then we just remove the last element from the list so it doesn't take space

这是整个工作示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QCheckBox, QVBoxLayout

class App(QWidget):

def __init__(self):
super().__init__()
self.width = 320
self.height = 200
self.initUI()

def initUI(self):
self.setWindowTitle("My app")

self.vbox = QVBoxLayout()
self.vbox.addStretch(1)

cr_button = QPushButton('Press to add widgets')
cr_button.clicked.connect(self.create)

del_button = QPushButton('Press to delete widgets')
del_button.clicked.connect(self.delete)

self.vbox.addWidget(cr_button)
self.vbox.addWidget(del_button)

self.checkboxes = []

self.setLayout(self.vbox)
self.show()

def create(self):
checkbox = QCheckBox("Iam checkbox number: {}".format(len(self.checkboxes)))

self.vbox.addWidget(checkbox)

self.checkboxes.append(checkbox)
self.show()

def delete(self):
self.checkboxes[-1].deleteLater()
self.checkboxes.pop()
self.show()


if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())

关于python - 如何删除动态生成的复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65849614/

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