【发布时间】:2021-03-30 16:03:50
【问题描述】:
我最近切换到 mac,但我的 pyqt5 应用程序运行不正常。我在行中设置了一个带有复选框的表格。在 PC 上,当您单击复选框时,它首先更新行,然后点击复选框。在 Mac 上,它只是点击复选框而不触发行更改。我什至无法弄清楚我要在哪一行进行任何更改。
这是可以在 pc 上运行的基本代码,但在 mac 上总是输出“0, 3”:
for i in range(4):
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(i, item)
item.setText(_translate("MainWindow", str(i)))
self.tableWidget.setCellWidget(i, 0, QtWidgets.QCheckBox())
self.tableWidget.cellWidget(i, 0).clicked.connect(lambda: print(self.tableWidget.currentRow(), i))
如果您想自己测试,这里是完整文件:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(195, 101, 371, 321))
self.tableWidget.setObjectName("tableWidget")
MainWindow.setCentralWidget(self.centralwidget)
self.tableWidget.setColumnCount(1)
self.tableWidget.setRowCount(4)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Value"))
for i in range(4):
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(i, item)
item.setText(_translate("MainWindow", str(i)))
self.tableWidget.setCellWidget(i, 0, QtWidgets.QCheckBox())
self.tableWidget.cellWidget(i, 0).clicked.connect(lambda: print(self.tableWidget.currentRow(), i))
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
【问题讨论】:
-
对于您的评论,我在解决问题时更新了帖子,提供了更多信息。这是一个非常清晰的版本,因为我之前的信息较少。不过,如果您能提供任何帮助,我将不胜感激。
-
啊,好吧,我以为它已经死了。以后我会记住的,谢谢!所以我认为你无能为力?
-
不不,这是一个获取编程问题帮助的网站。对发布的问题的帮助并非无关紧要。不过评论区泛滥成灾。