在PyQt5中,我正在动态添加QPushButtons,有没有一种方法可以根据某个标签值删除它们。我通过以下方式动态添加按钮:
for i in range(0, len(self.all_saved)):
self.button = QPushButton("X", self)
self.button.setStyleSheet("background-color: red")
self.button.resize(20, 20)
self.button.clicked.connect(lambda ch, i=i: self.future(i))
self.button.move(self.all_rect[i][0], self.all_rect[i][1])
self.button.show()一旦用户点击按钮'X‘它应该删除自己,这基本上就是我在这里试图做的所有事情,至于为什么我不能使用QVBoxLayout是因为所有的按钮都将被放置在不同的x,y坐标上,请让我知道如果你有任何建议?
我知道我们可以使用QVBoxLayout或QHBoxLayout很容易做到这一点,但是有没有一种方法可以直接在QtWidgets.QWidget上实现呢
发布于 2021-07-08 00:40:56
您只需调用deleteLater()方法,该方法将删除对象并(使用销毁信号)通知布局小部件已被删除。注意:不要使用self.button,因为它是无用的。
for i in range(0, len(self.all_saved)):
button = QPushButton("X", self)
button.setStyleSheet("background-color: red")
button.resize(20, 20)
button.clicked.connect(button.deleteLater)
button.move(self.all_rect[i][0], self.all_rect[i][1])
button.show()如果您想根据某些条件删除某些按钮,则必须使用sender ()方法来获取按钮并调用deleteLater:
button.clicked.connect(self.handle_clicked)def handle_clicked(self):
button = self.sender()
if some_condition:
button.deleteLater()https://stackoverflow.com/questions/68289016
复制相似问题