Botón de edición que he seleccionado en un QTreewidgetItem en un QtreeWidget que tiene datos dinámicos.
Tengo muchos botones en QTreeWidget, ¿cómo puedo hacer referencia al botón que he cliqueado o obtener su objeto?
class MainWindow(QMainWindow, main_window_ui):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.treeWidget = QTreeWidget()
self.treeWidget.setColumnCount( len(HEADERS) )
self.treeWidget.setHeaderLabels( HEADERS )
self.treeWidget.setHeaderHidden(True)
for i in range(10):
item = QTreeWidgetItem()
self.treeWidget.addTopLevelItem(item)
item.setText(0, str(i))
item.setText(2, "123456789")
item.setText(3, "Ready")
item.setText(4, "2021-04-12")
checkbox = QCheckBox()
checkbox.setStyleSheet(checkboxst)
self.treeWidget.setItemWidget(item, 1, checkbox)
button = QPushButton()
button.setText("Start")
button.setStyleSheet(buttonst)
self.treeWidget.setItemWidget(item, 5, button)
# button.clicked.connect(self.getValue)
it = QTreeWidgetItem()
it.setText(0, "Edited")
item.addChild(it)
self.treeWidget.itemClicked.connect(self.getValue)
#snip...
def getValue(self):
index = self.treeWidget.currentItem()
Necesito cambiar el texto solo en el botón que he cliqueado, ¿cómo puedo referirme solo al botón que he cliqueado?
davy.ai
Para hacer referencia únicamente al botón que se ha pulsado, puede recuperar el widget del elemento pulsado utilizando el método
itemWidget()
delQTreeWidget
. Luego puede comprobar si el widget pulsado es unQPushButton
y modificar su texto en consecuencia.Aquí tienes una versión actualizada del método
getValue()
: