我在具有动态数据的 QtreeWidget 中的 QTreewidgetItem 中单击的编辑按钮
Posted
技术标签:
【中文标题】我在具有动态数据的 QtreeWidget 中的 QTreewidgetItem 中单击的编辑按钮【英文标题】:Edit button which i clicked in QTreewidgetItem in QtreeWidget which have dynamic data 【发布时间】:2022-01-11 19:35:38 【问题描述】:我在 QTreeWidget 中有很多按钮,如何引用我点击的按钮或获取她的对象。
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()
我只需要更改我点击的按钮中的文本,我如何才能只引用我点击的按钮?
【问题讨论】:
您要更改什么文字? 在从“开始”到“停止”的按钮中,但我不知道如何引用生成的这个按钮。 @eyllanesc 【参考方案1】:如果您想确定按下了哪个按钮,则可以使用 sender 方法:
button.clicked.connect(self.handle_clicked)
def handle_clicked(self):
button = self.sender()
if isinstance(button, QPushButton):
button.setText("Stop" if button.text() == "Start" else "Start")
【讨论】:
非常感谢,你帮了我很多,我很佩服你。以上是关于我在具有动态数据的 QtreeWidget 中的 QTreewidgetItem 中单击的编辑按钮的主要内容,如果未能解决你的问题,请参考以下文章
QTreeWidget控件中 itemchanged信号触发后,怎么获取item修改前的值