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

时间:2018-08-21 08:23:18

标签: python pyqt pyqt5 qtableview

我正在尝试使PyQt5表格视图的每个单元格都适合,因此在文本末尾没有...

我尝试过:

private static string userLogin;

public static void SetUser()
{
    userLogin = LoginName.Text; // with an uppercase T!
}

但这没用

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

2 个答案:

答案 0 :(得分:1)

仅在将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

答案 1 :(得分:1)

尝试一下:

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