【发布时间】:2019-01-22 09:38:59
【问题描述】:
我想在 PyQt5 中创建一个表,在每个列标题中都有一个组合框。当我尝试这样做时,返回以下错误:
TypeError: setHorizontalHeaderItem(self, int, QTableWidgetItem): argument 2 has unexpected type 'QComboBox'
显然setHorizontalHeaderItem() 函数不接受小部件作为项目。那么有没有办法实现这一目标?如果没有,我会解决将组合框放在标题 above 上,但它们应该与每列的大小对齐,即使用户使用鼠标更改宽度也是如此。我也不知道这是否可行。
我的代码:
from PyQt5 import QtWidgets
import numpy as np
class App(QtWidgets.QWidget):
def __init__(self):
super(App,self).__init__()
self.data = np.random.rand(5,5)
self.createTable()
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.table)
self.setLayout(self.layout)
self.showMaximized()
def createTable(self):
self.header = []
self.table = QtWidgets.QTableWidget(len(self.data), len(self.data[0]))
for i in range(len(self.data[0])):
self.header.append(QtWidgets.QComboBox())
self.header[-1].addItem('Variable')
self.header[-1].addItem('Timestamp')
self.table.setHorizontalHeaderItem(i,self.header[-1])
for i in range(len(self.data)):
for j in range(len(self.data[0])):
self.table.setItem(i,j,QtWidgets.QTableWidgetItem(str(self.data[i][j])))
if __name__ == '__main__':
app = QtWidgets.QApplication([])
ex = App()
app.exec_()
【问题讨论】:
标签: python pyqt pyqt5 qtablewidget qcombobox