tkinter有表格小部件吗?

时间:2012-02-19 09:59:15

标签: python tkinter

我正在学习Python,我想用它来创建一个简单的GUI应用程序,因为Tkinter已经内置(并且使用起来非常简单)我想用它来构建我的申请。

我想创建一个应用程序,它将显示一个包含我从数据库加载的数据的表。

我搜索了table,但未能找到有关Tkinter table组件的任何示例和/或文档。

Tkinter是否有内置的table组件?如果没有,我可以/我应该使用什么呢?

9 个答案:

答案 0 :(得分:31)

您可以使用Tkinter的网格。

创建一个简单的类似excel的表:

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()

您可以通过访问网格的子项并从中获取值来获取数据。

答案 1 :(得分:22)

Tkinter没有内置的表格小部件。您可以使用的最接近的是tkinter子包ttkListboxTreeview

但是,您可以使用tktable,它是Tcl/Tk TkTable窗口小部件的包装器,由Guilherme Polo编写。 注意:要使用此包装程序库,首先需要安装原始Tk的TkTable库,否则会出现“导入错误”。

答案 2 :(得分:17)

如果表格是只读的,并且您使用的是足够现代版本的Tkinter,则可以使用ttk.Treeview小部件。

您还可以非常轻松地创建EntryLabel小部件的网格。请参阅此答案以获取示例:https://stackoverflow.com/a/11049650/7432

答案 3 :(得分:12)

您可以使用tkintertable。请参阅here如何开始使用它。

答案 4 :(得分:2)

除了@steven响应之外,您还可以执行此操作以引用任何表单元格

from Tkinter import *

root = Tk()

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

mainloop()

答案 5 :(得分:2)

使用漂亮的库

大家好,我们可以使用漂亮的库来制作像 tkinter 中的 sql 那样出色的表。

首先在cmd中执行以下代码安装prettytable库

pip install prettytable

现在这是一个用于制作表格的不言自明的代码:

from prettytable import PrettyTable
from tkinter import *

win=Tk()

t=Text(win)#Inside text widget we would put our table

x=PrettyTable()

x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]

x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.add_row(["Perth", 5386, 1554769, 869.4])

t.insert(INSERT,x)#Inserting table in text widget
t.pack()

win.mainloop()

此代码的输出:

enter image description here

在 t.insert(INSERT,x) 后面加上下面这行代码,使这个表只读

t.config(state=DISABLED)

这种方法可以很容易地制作表格。如果您想了解有关 Prettytable 的更多信息,click here

答案 6 :(得分:1)

https://github.com/clarenceangel/tkinterstuff我做了这个,但我不是专业人士。它确实创建了一个表,并将其作为一个框架返回,您可以将其添加到框架或根。您可以为它添加任意数量的行和列的csv,只要这些列在每行上都是偶数。

答案 7 :(得分:0)

我是用纯Python编写的名为tksheet的tkinter表小部件的作者,它仅适用于Python 3.63 +

它可以使用tkinter画布工作,并且仅重绘表格的可见部分,因此即使有数亿个单元格,它也可以非常平稳地运行

在许多其他功能中,您还可以轻松更改任何颜色并突出显示单元格的背景和前景

您可以在这里找到存储库:https://github.com/ragardner/tksheet

答案 8 :(得分:0)

您可以尝试使用tksheet小部件,就像tkinter中的excel文件一样。 您还可以在其中制作表格。 如果您使用Windows,则可以使用来安装它,

if(notAvailable){
    floatingActionButton.setEnabled(false);
}

并且在导入tkinter时可以使用

pip install tksheet