11

我想要一个类似 tkinter 中的表格小部件的 Excel 用于我正在编写的 gui。你有什么建议吗?

4

3 回答 3

14

你可以像这样使用 Tkinter 来制作一个简单的电子表格,比如 gui:

from Tkinter import *

root = Tk()

height = 5
width = 5
for i in range(height): #Rows
    for j in range(width): #Columns
        b = Entry(root, text="")
        b.grid(row=i, column=j)

mainloop()

编辑:如果你想从网格中获取值,你必须使用网格的孩子。

def find_in_grid(frame, row, column):
    for children in frame.children.values():
        info = children.grid_info()
        #note that rows and column numbers are stored as string                                                                         
        if info['row'] == str(row) and info['column'] == str(column):
            return children
    return None

您可以在哪里调用该函数,它将返回孩子。要获取条目的值,您可以使用:

find_in_grid(root, i+1, j).get()
于 2015-06-24T18:23:00.217 回答
9

如果您需要全表支持, Tktable至少可以说是最好的选择。简而言之,以下示例展示了如何使用它,假设您已经安装了它。该示例适用于 python3,但对于 python2,您只需更改 import 语句。

import tkinter as tk
import tktable

root = tk.Tk()
table = tktable.Table(root, rows=10, cols=4)
table.pack(side="top", fill="both", expand=True)
root.mainloop()

Tktable 可能难以安装,因为没有可安装 pip 的软件包。

如果您真正需要的是用于显示和编辑数据的小部件网格,您可以轻松构建条目或标签小部件网格。例如,请参阅问题Python的此答案。GUI(输入和输出矩阵)?

于 2011-08-26T19:21:13.570 回答
0

我在尝试使用 tkinter 显示完整的熊猫 DataFrame 时遇到了类似的问题。我的第一个选择是创建一个网格,就像在第一个答案中建议的人一样,但是对于这么多信息来说它太重了。

我想最好创建有限数量的单元格并仅显示 DF 的一部分,并随着用户的移动而更改该部分

于 2021-09-25T03:19:03.227 回答