0
我正在模型視圖編程中練習一些示例,並且詢問爲什麼顏色沒有正確表示。查詢表視圖 - 模型/視圖編程
的代碼如下:
我創建了一個表視圖
table_view = QTableView()
table_view.show()
table_view.setModel(model)
test_data = data(4,5)
model = paletteTableview(test_data)
class paletteTableview(QAbstractTableModel):
def __init__(self, test_data, parent=None):
super(paletteTableview, self).__init__(parent)
self.__test_data = test_data
def rowCount(self, parent):
return len(self.__test_data)
def columnCount(self, parent):
return len(self.__test_data[0])
def data(self,index,role):
if role == Qt.DisplayRole:
row = index.row()
column = index.column()
value = self.__test_data[row][column]
return value
if role == Qt.DecorationRole:
row = index.row()
column = index.column()
value = self.__test_data[row][column]
#print value
value = QColor(value)
#print value
pixmap = QPixmap(26,26)
pixmap.fill(value)
icon = QIcon(pixmap)
return icon
def data(row,column):
test_data = []
k = "FF0000"
temp_data= []
for i in range(row):
for j in range(column):
list = ['#']
for a in k:
list.append(a)
d = ''.join(list)
temp_data.append(d)
c = int(k,16)
c = c + 1
k = "%X" % c
test_data.append(temp_data)
temp_data = []
return test_data
我在這裏失去了一些東西?請告訴我。
感謝分享數據生成邏輯..真的很奇妙。它工作得很好。但即使現在我得到了相同的顏色,儘管現在十六進制值是完全不同的。我懷疑我使用價值來獲取顏色的方式。我真的懷疑decorole邏輯..它是否適合你? – user596922
我編輯內容並給出我的整個測試代碼,您可以嘗試測試。但是除了「數據」之外,主要邏輯與您的完全一樣,我在Windows下使用PyQt 4.8.3.1 for python27。 – winterTTr