gpt4 book ai didi

python - 如何在 Python 中为 QTableWidget 设置大小提示

转载 作者:行者123 更新时间:2023-12-04 15:49:03 24 4
gpt4 key购买 nike

我目前有 python 函数(如下)从 pandas 数据框 (df) 构建 QTableWidget。我希望此 QTableWidget 默认为显示所有单元格的大小。不幸的是,QSizePolicy.Maximum 使用的默认大小提示切断了表中的一些行和列。 QTableWidget 似乎没有 setSizeHint() 方法。如何将大小提示设置为显示所有行和列的大小?

我试过寻找以前关于此的帖子,但我找到的答案都不是用 Python 和使用 QTableWidget。

import PyQt5.QWidgets as QWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import pandas as pd

def build_table(self,df):

table = QWidgets.QTableWidget()

table.setColumnCount(len(df.columns))
table.setRowCount(len(df.index))
table.setHorizontalHeaderLabels(df.columns)

for row_num, row in enumerate(df.index):
for col_num, col in enumerate(df.columns):
item = QWidgets.QTableWidgetItem(str(df.loc[row,col]))
item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
table.resizeColumnsToContents()
table.resizeRowsToContents()
table.verticalHeader().setVisible(False)
table.setSizePolicy(QWidgets.QSizePolicy.Maximum,QWidgets.QSizePolicy.Maximum)

最佳答案

大小调整策略:大小调整策略

此属性包含描述当视口(viewport)大小发生变化时滚动区域的大小如何变化的策略。

试一试:

import sys
import pandas as pd
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *


class MyWin(QMainWindow):
def __init__(self, df):
super().__init__()

centralWidget = QWidget()
self.setCentralWidget(centralWidget)
layout = QGridLayout(centralWidget)

self.tableWidget = self.build_table(df)

self.tableWidget.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents) # <---

self.tableWidget.setAlternatingRowColors(True)
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

layout.addWidget(self.tableWidget)
layout.addWidget(QPushButton("Button"))

def build_table(self, df):

table = QTableWidget()
table.setColumnCount(len(df.columns))
table.setRowCount(len(df.index))
table.setHorizontalHeaderLabels(df.columns)

for row_num, row in enumerate(df.index):
for col_num, col in enumerate(df.columns):
item = QTableWidgetItem(str(df.loc[row,col]))

table.setItem(row_num, col_num, item) # +++

item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)

table.resizeColumnsToContents()
table.resizeRowsToContents()
table.verticalHeader().setVisible(False)
# self.table.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) # ---

return table # +++


df = pd.DataFrame(
{'a': ['1','2','3','4','Mary','Jim','John'], 'b': ['3','4','1','2',100, 200, 300], 'c': ['1','2','3','4','a','b','c'],
'd': ['1','2','3','4','Mary','Jim','John'], 'e': ['1','2','3','4',100, 200, 300], 'f': ['1','2','3','4','a','b','c'],
'g': ['1','2','3','4','Mary','Jim','John'], 'h': ['1','2','3','4',100, 200, 300], 'j': ['1','2','3','4','a','b','c'],
'k': ['1','2','3','4','Mary','Jim','John'], 'l': ['1','2','3','4',100, 200, 300], 'm': ['1','2','3','4','a','b','c'],
})

if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWin(df)
w.show()
sys.exit(app.exec_())

enter image description here

关于python - 如何在 Python 中为 QTableWidget 设置大小提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54612127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com