我已经创建了一个带有Table的窗口小部件,当我使用pyuic
转换它时,我得到了下面的代码,到目前为止没什么太奇怪了。当我们到达第二个item = QtWidgets.QTableWidgetItem()
时,我不明白发生了什么。我觉得它再次重新分配变量item
。但是,如果我删除第二个分配表输出Short | Short
。这是不合理的,为什么会出现这种情况。为什么要删除第二个分配的item
会使我的表格顶部不同?
def setupUi(self, Form):
Form.setObjectName("Form")
self.verticalLayout = QtWidgets.QVBoxLayout(Form)
self.verticalLayout.setObjectName("verticalLayout")
self.tableWidget = QtWidgets.QTableWidget(Form)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(2)
self.tableWidget.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
self.verticalLayout.addWidget(self.tableWidget)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(("Form"))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(("Descrip"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(("Short"))
答案 0 :(得分:0)
这是合乎逻辑的。
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
# item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
如果删除第三行,item
变量将继续引用同一个实例。因此,在最后一行中,您将基本上引用与第一个标题项中相同的数据。因此,您最终会得到两个使用相同QTableWidgetItem的标头项。
现在我们来看看retranslateUi()
:
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(("Descrip"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(("Short"))
第一行和第二行,您将检索项目实例并向其添加文本“Descrip”。然后,您将获得第二个标题项的项目,该项目与以前完全相同。因此,在最后一行中,您将文本设置为“短”,并且两个标题都将显示为“短”。
如果要查看,请使用以下代码:
item1 = self.tableWidget.horizontalHeaderItem(0)
item2 = self.tableWidget.horizontalHeaderItem(1)
print(item1 == item2)