【发布时间】:2017-07-17 17:21:30
【问题描述】:
我在 PyQt5 应用程序中有一个 6x1(6 行,1 列)QTableWidget 表。
当程序启动时,所有表格的单元格都被一个灰色背景的 QTableWidgetItem 填充
self.shaftsTable = QtWidgets.QTableWidget()
# table setups (...)
for i in range(self.nf):
for j in range(self.nc):
item = QtWidgets.QTableWidgetItem()
item.setBackground(QtGui.QColor(200,200,200))
self.shaftsTable.setItem(i, j, item)
然后一个QtWidgets.QListWidget被放置在最下面的单元格(第5行,第0列)
el = QtWidgets.QListWidget(Window)
self.shaftsTable.setCellWidget(5, 0, el)
假设该表将模拟穿过 6 层楼的电梯路径:电梯是一个 QtWidgets.QListWidget,其中包含当前在电梯中的所有乘客的列表;电梯从最低层开始,因此它被放置在桌子的位置(5,0)。
我想将电梯从单元格(5,0)移动到单元格(4,0),即从最低楼层移动到下一层后,电梯只会在单元格(4,0)中,并且不在单元格 (5,0) 中。
以下内容不起作用,因为 removeCellWidget() 也会从单元格 (4,0) 中明确删除对象:
el = self.shaftsTable.cellWidget(5, 0)
self.shaftsTable.setCellWidget(4, 0, el)
self.shaftsTable.removeCellWidget(5, 0)
我在 PyQt 文档 http://pyqt.sourceforge.net/Docs/PyQt4/qtablewidget.html 中没有找到任何简单的函数来做我需要的事情
我尝试制作电梯的副本(使用 copy.deepcopy()),将副本放在单元格 (4,0) 中,然后删除单元格 (5,0) 中的原始电梯,但 copy.deepcopy() 失败在 QtWidgets.QListWidget 上。
您有什么想法或建议吗? (我确信有一种或多种方法可以解决我的问题,但作为新手,我想不出一个)
【问题讨论】: