我从python v3.10开始,实际上我使用PyQt6来设计窗口。
我创建了一个QTableWidget,在其中我放置了一个带有图片的复选框。
现在我想创建一个信号,当我点击它时执行一个功能
我尝试过,连接,stateChanged。。。但什么都不管用。
我在代码下面写了一张图片:
while self.query.next():
# widget checkbox
checkbox_widget = QWidget()
checkbox_widget.setStyleSheet('background-color: transparent;')
w_checkbox = QtWidgets.QCheckBox
layout_cb = QtWidgets.QHBoxLayout(checkbox_widget)
layout_cb.addWidget(w_checkbox())
layout_cb.setAlignment(Qt.AlignmentFlag.AlignCenter)
layout_cb.setContentsMargins(0, 0, 0, 0)
checkbox_widget.setLayout(layout_cb)
tablerow = self.table_EP.rowCount()
self.table_EP.insertRow(tablerow)
self.table_EP.setItem(tablerow, 0, QtWidgets.QTableWidgetItem((self.query.value('col1'))))
self.table_EP.setItem(tablerow, 1, QtWidgets.QTableWidgetItem((self.query.value('col2'))))
self.table_EP.setItem(tablerow, 2, QtWidgets.QTableWidgetItem((self.query.value('col3'))))
self.table_EP.setItem(tablerow, 3, QtWidgets.QTableWidgetItem((str(self.query.value('col4')))))
self.table_EP.setItem(tablerow, 4, QtWidgets.QTableWidgetItem((str(self.query.value('col5')))))
self.table_EP.setItem(tablerow, 5, QtWidgets.QTableWidgetItem((str(self.query.value('col6')))))
self.table_EP.setItem(tablerow, 6, QtWidgets.QTableWidgetItem((self.query.value('col7'))))
self.table_EP.setItem(tablerow, 7, QtWidgets.QTableWidgetItem((str(self.query.value('col8')))))
self.table_EP.setItem(tablerow, 8, QtWidgets.QTableWidgetItem((str(self.query.value('col9')))))
self.table_EP.setCellWidget(tablerow, 9, w_checkbox())
self.table_EP.setCellWidget(tablerow, 9, checkbox_widget)
w_checkbox.stateChanged.connect(self.clicked_button())
在此处输入图像描述
非常感谢你的帮助(对不起我的英语(。
这是一些奇怪的代码。
最终,您需要在QtWidgets.QCheckBox
的实例上调用.stateChanged.connect(self.clicked_button())
。
使用以下行创建类QtWidgets.QCheckBox
的实例:layout_cb.addWidget(w_checkbox())
,但不将其分配给变量。
您应该首先将其分配给一个变量,然后使用该变量引用它,如下所示:
checkbox = QtWidgets.QCheckBox()
layout_cb.addWidget(checkbox)
checkbox.stateChanged.connect(self.clicked_button())
你确定你需要self.clicked_button()
之后的括号吗?只有当它返回一个函数时,这才有意义。