我用的python3.8和最新的pandastable,不管怎么弄,都改不了字体和单元格大小,之前用tkintertable也是这个问题,请问是怎么回事儿呢?还有什么GUI能显示pandas的frame吗?谢谢🙏
【以下回答由 GPT 生成】
pandastable库基于tkinter库开发,而tkinter库在字体设置方面存在一些限制。具体而言,tkinter库支持有限的字体选项,并且无法直接修改单元格大小,因为它是基于像素的布局。因此,无论你在代码中如何设置,这些修改对pandastable库不起作用。
如果你需要调整字体和单元格大小,可以考虑使用其他GUI库来显示pandas数据框。以下是一些推荐的库:
PyQtGraph是一个用于Python的高性能,交互式和实时数据可视化库。它使用PyQt和NumPy来快速创建GUI应用程序,并支持自定义字体和单元格大小。以下是一个简单的示例代码:
import pandas as pd
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
def create_table(df):
# 创建表格并设置字体
table = pg.TableWidget()
font = QtGui.QFont("Arial", 12)
table.setFont(font)
# 添加数据
table.setData(df)
# 设置单元格大小
table.resizeColumnsToContents()
table.resizeRowsToContents()
# 显示表格
table.show()
# 创建示例数据框
data = {'Name': ['John', 'Emily', 'Ryan'],
'Age': [28, 34, 29],
'City': ['New York', 'Paris', 'London']}
df = pd.DataFrame(data)
# 显示表格
create_table(df)
PyQt5是一个功能强大,跨平台的GUI库,可用于创建各种类型的应用程序,包括显示pandas数据框。以下是一个简单的示例代码:
import sys
import pandas as pd
from PyQt5 import QtWidgets
class PandasTableWidget(QtWidgets.QTableWidget):
def __init__(self, df):
super().__init__(df.shape[0], df.shape[1])
self.setData(df)
def setData(self, df):
self.setHorizontalHeaderLabels(df.columns)
for i, row in enumerate(df.itertuples(index=False)):
for j, value in enumerate(row):
item = QtWidgets.QTableWidgetItem(str(value))
self.setItem(i, j, item)
self.resizeColumnsToContents()
self.resizeRowsToContents()
# 创建示例数据框
data = {'Name': ['John', 'Emily', 'Ryan'],
'Age': [28, 34, 29],
'City': ['New York', 'Paris', 'London']}
df = pd.DataFrame(data)
# 创建应用程序
app = QtWidgets.QApplication(sys.argv)
# 创建表格
table = PandasTableWidget(df)
# 显示表格
table.show()
# 运行应用程序
sys.exit(app.exec_())
如果你还是想继续使用Tkinter,并且想要更多的自定义选项,你可以尝试使用tktable模块。tktable是一个Tkinter的插件,它提供了高度可定制的表格控件。以下是一个简单的示例代码:
import tkinter as tk
import tkinter.ttk as ttk
import pandas as pd
import tktable as tktbl
# 创建示例数据框
data = {'Name': ['John', 'Emily', 'Ryan'],
'Age': [28, 34, 29],
'City': ['New York', 'Paris', 'London']}
df = pd.DataFrame(data)
# 创建根窗口
root = tk.Tk()
# 创建表格
table = tktbl.Table(root,
rows=1 + df.shape[0],
cols=1 + df.shape[1],
state='disabled')
# 设置表头
header = [''] + list(df.columns)
table.insert('end', header)
# 设置数据
for i, row in enumerate(df.itertuples(index=False)):
table.insert('end', [i+1] + list(row))
# 设置字体和单元格大小
table.tag_configure('font', font=('Arial', 12))
table.tag_configure('size', width=100, height=20)
# 应用设置
table.tag_cell('font', 0, 'end')
table.tag_cell('size', 1, 'end', 'end')
# 显示表格
table.pack()
# 运行窗口
root.mainloop()
记得在运行代码之前,确保你已经安装了所需的库,使用pip install
命令来安装它们。
【相关推荐】