pandastable调整字体和单元格大小

我用的python3.8和最新的pandastable,不管怎么弄,都改不了字体和单元格大小,之前用tkintertable也是这个问题,请问是怎么回事儿呢?还有什么GUI能显示pandas的frame吗?谢谢🙏

【以下回答由 GPT 生成】

问题解答

原因解释

pandastable库基于tkinter库开发,而tkinter库在字体设置方面存在一些限制。具体而言,tkinter库支持有限的字体选项,并且无法直接修改单元格大小,因为它是基于像素的布局。因此,无论你在代码中如何设置,这些修改对pandastable库不起作用。

解决方案

如果你需要调整字体和单元格大小,可以考虑使用其他GUI库来显示pandas数据框。以下是一些推荐的库:

PyQtGraph

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

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

如果你还是想继续使用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命令来安装它们。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^