简体   繁体   English

Python PyQt5 - 如何重命名表头?

[英]Python PyQt5 - How to rename table headers?

I have a function that adds new column to the table, hoewer I do not know how to rename the column header.我有一个 function 向表中添加新列,但是我不知道如何重命名列 header。 What I want is for the user to either double click on the column header so that you could edit the column header.我想要的是用户双击列 header 以便您可以编辑列 header。 or what I have now: I have aa button that adds a new column and line Edit where you write your column name.或者我现在拥有的:我有一个按钮,可以添加一个新列和行编辑,您可以在其中写入列名。

I do not know how to rename the column header names我不知道如何重命名列 header 名称

This is my code that handles adding new column to the 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: So here is the fix, I have also added an error message that will be displayed if the column doesn't carry a name, if it doesn't the column will not be added解决方案/修复:所以这是修复,我还添加了一条错误消息,如果该列没有名称,将显示该错误消息,如果没有,则不会添加该列

 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)

if you use a model.. See headerData... it defines the horizontal header... columns.如果您使用 model.. 请参阅 headerData... 它定义了水平 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])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM