Есть ли у tkinter табличный виджет?

Я изучаю Python, и я хотел бы использовать его для создания простого приложения с графическим интерфейсом, и так как Tkinter уже встроен (и очень прост в использовании), я хотел бы использовать его для создания моего приложения.

Я хотел бы сделать приложение, которое будет отображать таблицу, которая содержит некоторые данные, которые я загрузил из моей базы данных.

Я искал table но не смогли найти никаких примеров и / или документации, касающихся Tkinter table составная часть.

Есть ли Tkinter иметь встроенный table составная часть? Если нет, что я могу / должен использовать вместо этого?

10 ответов

Решение

Tkinter не имеет встроенного виджета таблицы. Самое близкое, что вы можете использовать, это Listbox или Treeview субпакета tkinter ttk,

Тем не менее, вы можете использовать tktable, который является оберткой вокруг Tcl/TkTkTable виджет, написанный Гильерме Поло. Примечание: чтобы использовать эту библиотеку обертки, вы должны сначала установить оригинальные Tk's TkTable библиотека, в противном случае вы получите "ошибка импорта".

Вы можете использовать сетку 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()

Вы можете получить данные, обратившись к дочерним элементам сетки и получив оттуда значения.

Если таблица доступна только для чтения и вы используете достаточно современную версию Tkinter, вы можете использовать виджет ttk.Treeview.

Вы также можете довольно легко создать сетку Entry или же Label виджеты. Посмотрите этот ответ для примера: /questions/42439448/sozdanie-tablitsyi-pohozhej-na-tkinter/42439449#42439449

Я являюсь автором виджета таблицы tkinter, написанного на чистом Python с именем tksheet работает только для Python 3.63+

Он работает с использованием холстов tkinter и перерисовывает только видимую часть таблицы, поэтому работает довольно плавно даже с сотнями миллионов ячеек.

Помимо многих других функций, вы также можете легко изменить любые цвета и выделить фон ячеек и передний план.

Вы можете найти репозиторий здесь: https://github.com/ragardner/tksheet

Вы можете использовать tkintertable. Смотрите здесь, как начать использовать его.

В дополнение к ответу @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()

Используя prettytable

Привет всем, мы можем использовать библиотеку prettytable для создания отличных таблиц, подобных таблице sql.

Сначала сделайте pip install prettytable в cmd

теперь это не требующий пояснений код для создания таблицы:

      from prettytable import PrettyTable
from tkinter import *

win=Tk()

t=Text(win)

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)
t.pack()

win.mainloop()

https://github.com/clarenceangel/tkinterstuff Я сделал это, но я не профессионал. Тем не менее, он создает таблицу и возвращает ее в виде фрейма, который можно добавить к фрейму или корню. Вы передаете его в формате csv с любым количеством строк и столбцов, если столбцы, конечно, находятся в каждой строке.

Вы можете попробовать виджет tksheet, он похож на файлы Excel в tkinter. в котором вы также можете делать таблицы. если вы используете Windows, вы можете установить его, используя,

pip install tksheet

и при импорте в tkinter вы можете использовать,

from tksheet import Sheet

import tkinter as tk

Добавление к @Jojojustin и @Steven - создание адаптивного "стола"

      from tkinter import * 
root = Tk()

row = 5
col = 5
cells = {}
for i in range(row):
    for j in range(col):
        root.columnconfigure(j,weight=20) # making the columns responsive 
        root.rowconfigure(i,weight=20) # making the rows responsive 
        b = Entry(root,text="")
        b.grid(row=i,column=j,sticky=NSEW)
        cells[(i,j)] = b
root.mainloop()
Другие вопросы по тегам