首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从QtWidgets内部删除QPushButtons?

如何从QtWidgets内部删除QPushButtons?
EN

Stack Overflow用户
提问于 2021-07-07 23:36:03
回答 1查看 22关注 0票数 0

在PyQt5中,我正在动态添加QPushButtons,有没有一种方法可以根据某个标签值删除它们。我通过以下方式动态添加按钮:

代码语言:javascript
复制
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上实现呢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-08 00:40:56

您只需调用deleteLater()方法,该方法将删除对象并(使用销毁信号)通知布局小部件已被删除。注意:不要使用self.button,因为它是无用的。

代码语言:javascript
复制
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:

代码语言:javascript
复制
button.clicked.connect(self.handle_clicked)
代码语言:javascript
复制
def handle_clicked(self):
    button = self.sender()
    if some_condition:
        button.deleteLater()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68289016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档