Python PyQt5 - 如何重命名 table headers?
Python PyQt5 - How to rename table headers?
我有一个函数可以将新列添加到 table,但是我不知道如何重命名该列 header。
我想要的是让用户双击 header 列,以便您可以编辑 header 列。或者我现在拥有的:
我有一个按钮可以添加一个新的列和行编辑,您可以在其中输入列名。
我不知道如何重命名列 header 名称
这是我的代码,用于处理向 table 添加新列。
def addNewColumn(self):
self.tableColumn = self.table_Database.columnCount()
self.table_Database.setColumnCount(self.tableColumn + 1)
self.table_Database.setItem(0,self.tableColumn,QtWidgets.QTableWidgetItem())
if self.table_Database.rowCount() == 0:
self.table_Database.setRowCount(1)
self.table_Database.setItem(1,0,QtWidgets.QTableWidgetItem())
SOLUTION/FIX:
所以这是修复,我还添加了一条错误消息,如果该列没有名称,将显示该错误消息,如果没有,则不会添加该列
def addNewColumn(self):
self.error_message = QtWidgets.QErrorMessage()
if self.addNewColumnName_TEXT.text() == '':
self.error_message.showMessage('Column doesn't have a name')
else:
self.tableColumn = self.table_Database.columnCount()
self.table_Database.setColumnCount(self.tableColumn + 1)
self.table_Database.setItem(0,self.tableColumn,QtWidgets.QTableWidgetItem())
self.__tableHeader_Labels.append(self.addNewColumnName_TEXT.text())
self.table_Database.setHorizontalHeaderLabels(self.__tableHeader_Labels)
如果你使用模型..
参见header数据...它定义水平header...列。
class TableModel(QtCore.QAbstractTableModel):
def __init__(self, data):
super(TableModel, self).__init__()
self._data = data
def headerData(self, p_int, Qt_Orientation, role=None):
if role == Qt.DisplayRole and Qt_Orientation==Qt.Horizontal:
header = ['Symbol', 'Time', 'Price', 'Current Price','Orig Qty', 'Executed Qty', 'Type']
return header[p_int]
else:
return QtCore.QAbstractTableModel.headerData(self, p_int, Qt_Orientation, role)
def data(self, index, role):
if role == Qt.DisplayRole:
# See below for the nested-list data structure.
# .row() indexes into the outer list,
# .column() indexes into the sub-list
return self._data[index.row()][index.column()]
def rowCount(self, index):
# The length of the outer list.
return len(self._data)
def columnCount(self, index):
# The following takes the first sub-list, and returns
# the length (only works if all rows are an equal length)
return len(self._data[0])
我有一个函数可以将新列添加到 table,但是我不知道如何重命名该列 header。 我想要的是让用户双击 header 列,以便您可以编辑 header 列。或者我现在拥有的: 我有一个按钮可以添加一个新的列和行编辑,您可以在其中输入列名。
我不知道如何重命名列 header 名称
这是我的代码,用于处理向 table 添加新列。
def addNewColumn(self):
self.tableColumn = self.table_Database.columnCount()
self.table_Database.setColumnCount(self.tableColumn + 1)
self.table_Database.setItem(0,self.tableColumn,QtWidgets.QTableWidgetItem())
if self.table_Database.rowCount() == 0:
self.table_Database.setRowCount(1)
self.table_Database.setItem(1,0,QtWidgets.QTableWidgetItem())
SOLUTION/FIX: 所以这是修复,我还添加了一条错误消息,如果该列没有名称,将显示该错误消息,如果没有,则不会添加该列
def addNewColumn(self):
self.error_message = QtWidgets.QErrorMessage()
if self.addNewColumnName_TEXT.text() == '':
self.error_message.showMessage('Column doesn't have a name')
else:
self.tableColumn = self.table_Database.columnCount()
self.table_Database.setColumnCount(self.tableColumn + 1)
self.table_Database.setItem(0,self.tableColumn,QtWidgets.QTableWidgetItem())
self.__tableHeader_Labels.append(self.addNewColumnName_TEXT.text())
self.table_Database.setHorizontalHeaderLabels(self.__tableHeader_Labels)
如果你使用模型.. 参见header数据...它定义水平header...列。
class TableModel(QtCore.QAbstractTableModel):
def __init__(self, data):
super(TableModel, self).__init__()
self._data = data
def headerData(self, p_int, Qt_Orientation, role=None):
if role == Qt.DisplayRole and Qt_Orientation==Qt.Horizontal:
header = ['Symbol', 'Time', 'Price', 'Current Price','Orig Qty', 'Executed Qty', 'Type']
return header[p_int]
else:
return QtCore.QAbstractTableModel.headerData(self, p_int, Qt_Orientation, role)
def data(self, index, role):
if role == Qt.DisplayRole:
# See below for the nested-list data structure.
# .row() indexes into the outer list,
# .column() indexes into the sub-list
return self._data[index.row()][index.column()]
def rowCount(self, index):
# The length of the outer list.
return len(self._data)
def columnCount(self, index):
# The following takes the first sub-list, and returns
# the length (only works if all rows are an equal length)
return len(self._data[0])