我正在嘗試創建一個表格,其中有2列和幾行。 Column1將列出場景中的所有可用網格/地理位置,而Column2將以每個單元格的組合框的形式顯示,其中包含多個選項 - 根據Column1的網格/地理位置,它將在組合框中列出不同的着色器選項因爲它將從文件中讀取。在表格中要說的是,每個項目都是以每行爲基礎。在Maya的QTableWidget中沒有正確添加項目
我目前有填充網格/地理列表到Column1的問題。假設我的場景有5個地理區域 - pCube1, pCube2, pCube3, pCube4, pCube5
,在我的表格中,我預計其5行的Column0將被填充爲pCube#
,但不是那樣,我將pCube5
作爲我的輸出結果。
請參見下面的代碼:
from PyQt4 import QtGui, QtCore
from functools import partial
import maya.cmds as cmds
class combo_box(QtGui.QComboBox):
# For combox
def __init__(self, *args, **kwargs):
super(combo_box, self).__init__(*args, **kwargs)
def get_all_geos():
all_geos = cmds.ls(type='mesh')
return all_geos
class TestTable(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setLayout(QtGui.QVBoxLayout())
self.resize(600, 300)
self.myTable = QtGui.QTableWidget()
self.myTable.setColumnCount(2)
rowCount = len(get_all_geos())
self.myTable.setRowCount(rowCount)
self.setTable()
self.layout().addWidget(self.myTable)
self.myTable.cellChanged.connect(self.update)
def setTable(self):
# Adding the list of mesh found in scene into first column
for geo in get_all_geos():
item = cmds.listRelatives(geo, parent=True)[0]
for i in range(0, self.myTable.rowCount()):
# instead of being populated with the list of items, I got the same name for the entire column
self.myTable.setItem(i, 0, QtGui.QTableWidgetItem(item))
# sets the combobox into the second column
box = combo_box()
nameList = ("test1","test2","test3")
box.addItems(nameList)
self.myTable.setCellWidget(i,1,box)
box.currentIndexChanged.connect(partial(self.tmp, i))
def tmp(self, rowIndex, comboBoxIndex):
item = "item " + str(comboBoxIndex)
self.myTable.setItem(rowIndex, 2, QtGui.QTableWidgetItem(item))
if __name__ == "__main__":
tableView = TestTable()
tableView.show()
在我的setTable
功能,item
沒有被正確處理?當我試圖將其添加到QTableWidget。有人可以建議嗎?
此外,如果任何人都可以回答,我使用的格式是否適用於我試圖實現的情景,正如我在帖子開頭提到的那樣?