代码之家  ›  专栏  ›  技术社区  ›  U13-Forward

如何将QTableView的所有单元格调整为适合的大小-PyQt5[重复]

  •  -1
  • U13-Forward  · 技术社区  · 6 年前

    我正在尝试使PyQt5表视图的每个单元格都适合,所以没有。。。在课文末尾

    我试过:

    MyTable.resizeColumnsToContents()
    

    但没用

    我的最后一个问题是如何使单元格的文本适合单元格,以便可以看到整个文本

    2 回复  |  直到 6 年前
        1
  •  2
  •   javapyscript    6 年前

    只有在将QTableView设置为以下模型后,我才尝试了您的代码:

    table_model = PandasModel(transactions)
    self.MyTable.setModel(table_model)
    self.MyTable.resizeColumnsToContents()
    

    如上图所示,我在设置了TableView的模型后,将您的代码添加到了TableView中,并且它工作正常。请检查您的代码是否设置为在填充表后调整大小?

    编辑:PandasModel是一个自定义类,它接受一个数据帧并从中创建一个模型。更多信息请点击此处: Fastest way to populate QTableView from Pandas data frame

        2
  •  2
  •   S. Nick    6 年前

    试试看:

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui     import *
    from PyQt5.QtCore    import *
    
    class Table(QWidget):
        def __init__(self, arg=None):
            super(Table, self).__init__(arg)
            self.setWindowTitle("QTableView")       
    
            self.model = QStandardItemModel(4, 4);
            self.model.setHorizontalHeaderLabels(['Heading 1','Heading 2','Heading 3','Heading 4'])
    
            for row in range(4):
                for column in range(4):
                    item = QStandardItem("row {}, column {}  {} ".format(row, column, "*** "*column))
                    self.model.setItem(row, column, item)
    
            self.tableView = QTableView()
            self.tableView.setModel(self.model)
    
            # +++
            self.tableView.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)
            self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
    
            dlgLayout = QVBoxLayout();
            dlgLayout.addWidget(self.tableView)
            self.setLayout(dlgLayout)
    
    if __name__ == '__main__':
        app   = QApplication(sys.argv)  
        table = Table()
        table.show()
        sys.exit(app.exec_())
    

    enter image description here