我现在正在为PyQt5的Python程序开发一个用户界面,感觉有点失落。我希望你能帮助我
我的程序的输出是一个数据帧,如本例所示
df = pd.DataFrame({'A': ['AAAAAAAA11111111', 'xyz', 'xyz'],
'B': ['BBBBBBBB11111111', 'xyz', 'xyz'],
'C': ['CCCCCCCC11111111', 'xyz', 'xyz'],
'D': ['CCCCCCCC11111111', 'xyz', 'xyz']})
我的目标是在用户界面中显示这个数据帧。列应该动态地适应用户界面的大小(如在网格布局中)
由于已经有许多对这个主题的贡献,我已经看了一些例子。比如这个
#https://www.youtube.com/watch?v=hJEQEECZSH0
import sys
import pandas as pd
from PyQt5.QtWidgets import QApplication, QTableView
from PyQt5.QtCore import QAbstractTableModel, Qt
df = pd.DataFrame({'A': ['AAAAAAAA11111111', 'xyz', 'xyz'],
'B': ['BBBBBBBB11111111', 'xyz', 'xyz'],
'C': ['CCCCCCCC11111111', 'xyz', 'xyz'],
'D': ['CCCCCCCC11111111', 'xyz', 'xyz']})
class pandasModel(QAbstractTableModel):
def __init__(self, data):
QAbstractTableModel.__init__(self)
self._data = data
def rowCount(self, parent=None):
return self._data.shape[0]
def columnCount(self, parent=None):
return self._data.shape[1]
def data(self, index, role=Qt.DisplayRole):
if index.isValid():
if role == Qt.DisplayRole:
return str(self._data.iloc[index.row(), index.column()])
return None
def headerData(self, col, orientation, role):
if orientation == Qt.Horizontal and role == Qt.DisplayRole:
return self._data.columns[col]
return None
if __name__ == '__main__':
app = QApplication(sys.argv)
model = pandasModel(df)
view = QTableView()
view.setModel(model)
view.resize(800, 600)
view.show()
sys.exit(app.exec_())
这个程序可以运行,但我不明白如何根据用户界面的宽度动态调整列的宽度
如果能给我一些建议,我将不胜感激
目前没有回答
相关问题 更多 >
编程相关推荐