如何从 QtWidgets 中删除 QPushButtons?
How to delete QPushButtons from inside QtWidgets?
在 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
上做到这一点
您只需调用 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()
在 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
上做到这一点您只需调用 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()