У tkinter есть виджет таблицы?
Я изучаю Python, и я хотел бы использовать его для создания простого графического приложения, и поскольку Tkinter
уже встроен (и очень прост в использовании), я хотел бы использовать его для создания моего приложения.
Я хотел бы создать приложение, которое отобразит таблицу, содержащую некоторые данные, которые я загрузил из своей базы данных.
Я искал table
, но не смог найти никаких примеров и/или документации относительно компонента Tkinter table
.
Имеет ли Tkinter
встроенный компонент table
? Если нет, что я могу использовать/вместо этого?
Ответы
Ответ 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()