Подтвердить что ты не робот

У tkinter есть виджет таблицы?

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Вы также можете довольно легко создать сетку из виджетов Entry или Label. Посмотрите этот ответ для примера: fooobar.com/questions/225357/...

Ответ 4

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

Ответ 5

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

Ответ 6

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