Как отобразить данные в таблице с помощью Tkinter
Если ваше приложение Python работает с данными, вы можете отобразить их в пользовательском интерфейсе. Стандартный метод отображения данных в приложениях с графическим интерфейсом — табличный формат, состоящий из строк и столбцов, как в электронной таблице. К сожалению, Tkinter не предоставляет виджет для создания таблицы. К счастью, есть альтернативные методы создания таблицы для отображения данных в Tkinter. Например, виджет Entry можно закодировать для отображения данных в таблице, а также существуют пакеты таблиц, которые можно загрузить из индекса пакетов Python (PyPI) и установить. Как только вы выберете метод, таблицу Tkinter можно использовать в качестве интерфейса для одной или нескольких связанных таблиц, содержащихся в базе данных для постоянного или постоянного хранения.
Виджет Entry обычно используется для ввода или отображения одной строки текста, но его также можно использовать вместе с функцией range() и циклом for для отображения значений в таблице из нескольких строк и столбцов. В этом примере функция range() генерирует список чисел, которые вносятся в таблицу виджета Entry, состоящую из 5 строк и 4 столбцов, организованных в виде grid() :
e.grid(row=i, column=j, sticky=NSEW)
Таким образом, мы рассмотрели один из методов создания таблиц в графическом интерфейсе Tkinter.
Создано 13.12.2022 12:37:42
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.
Python графический интерфейс таблицы
Для отображения данных в виде таблицы параметру show предпочтительно передать значение «headings» (если надо отображать заголовки), либо » » (для таблицы без заголовков). Определим небольшую таблицу с тремя столбцами:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") # определяем данные для отображения people = [("Tom", 38, "tom@email.com"), ("Bob", 42, "bob@email.com"), ("Sam", 28, "sam@email.com")] # определяем столбцы columns = ("name", "age", "email") tree = ttk.Treeview(columns=columns, show="headings") tree.pack(fill=BOTH, expand=1) # определяем заголовки tree.heading("name", text="Имя") tree.heading("age", text="Возраст") tree.heading("email", text="Email") # добавляем данные for person in people: tree.insert("", END, values=person) root.mainloop()
Здесь данные, которые будут отображаться в таблице, определены в виде списка people, который хранит набор кортежей. Каждый кортеж состоит из трех элементов. Условно будем считать, что первый элемент кортежа представляет имя пользователя, второй — возраст, а третий — электронный адрес. И эти данные нам надо отобразить в таблице:
people = [("Tom", 38, "tom@email.com"), ("Bob", 42, "bob@email.com"), ("Sam", 28, "sam@email.com")]
Для отображения этих данных определяем три столбца: name, age и email в виде кортежа и передаем их параметру columns :
columns = ("name", "age", "email") tree = ttk.Treeview(columns=columns, show="headings")
Далее нам надо настроить заголовки столбца с помощью метода heading() класса Treeview (по умолчанию столбцы не имеют никаких заголовков). Данный метод принимает ряд параметров:
Первый параметр указывает на имя столбца. В примере выше определяем также параметр text , который определяет текст заголовка
И последний момент — добавляем сами данные в таблицу с помощью метода insert() класса Treeview
tree.insert("", END, values=person)
Первый параметр — пустая строка «» указывает, что элемент добавляется как элемент верхнего уровня (то есть у него нет родительского элемента). Значение END указывает, что элемент добавляется в конец набора. И параметр values в качестве добавляемых данных устанавливает кортеж person.
В итоге мы получим следующую таблицу:
Настройка столбца
Вполне возможно, что изначальные настройки столбцов нас не устроят. Например, текст заголовка располагается по умолчанию по центру, а данные столбца выравниваются по левому краю. Кроме того, каждый столбец имеет некоторую начальную ширину, в следствие чего ширина виджета может оказаться больше ширины окна. Либо мы захотим как-то иначе настроить вид столбца.
Прежде всего мы можем настроить заголовки столбца с помощью метода heading() :
heading(column, text, image, anchor, command)
- column : имя настраиваемого столбца
- text : текст заголовка
- image : картинка для заголовка
- anchor : устанавливает выравнивание заголовка по определенному краю. Может принимать значения n, e, s, w, ne, nw, se, sw, c
- command : функция, выполняемая при нажатии на заголовок
Для настройки столбца в целом применяется метод column() :
column(column, width, minwidth, stretch, anchor)
- column : индекс настраиваемого столбца в формате «# номер_столбца»
- width : ширина столбца
- minwidth : минимальная ширина
- anchor : устанавливает выравнивание заголовка по определенному краю. Может принимать значения n, e, s, w, ne, nw, se, sw, c
- stretch : указывает, будет ли столбец растягиваться при растяжении контейнера. Если будет, то значение True , иначе значение False
Применим некоторые из этих параметров:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") # определяем данные для отображения people = [("Tom", 38, "tom@email.com"), ("Bob", 42, "bob@email.com"), ("Sam", 28, "sam@email.com")] # определяем столбцы columns = ("name", "age", "email") tree = ttk.Treeview(columns=columns, show="headings") tree.pack(fill=BOTH, expand=1) # определяем заголовки с выпавниваем по левому краю tree.heading("name", text="Имя", anchor=W) tree.heading("age", text="Возраст", anchor=W) tree.heading("email", text="Email", anchor=W) # настраиваем столбцы tree.column("#1", stretch=NO, width=70) tree.column("#2", stretch=NO, width=60) tree.column("#3", stretch=NO, width=100) # добавляем данные for person in people: tree.insert("", END, values=person) root.mainloop()
В данном случае для заголовков устанавливаем выравнивание по левому краю. Для столбцов запрещаем растяжение и устанавливаем ширину.
При добавлении изображения оно помещается в правой части. Например, установка изображения для третьего столбца:
# предполагается, что в папке приложения располагается файл email_icon_micro.png email_icon = PhotoImage(file="./email_icon_micro.png") tree.heading("email", text="Email", anchor=W, image=email_icon)
Добавление к Treeview прокрутки
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") root.rowconfigure(index=0, weight=1) root.columnconfigure(index=0, weight=1) # определяем данные для отображения people = [ ("Tom", 38, "tom@email.com"), ("Bob", 42, "bob@email.com"), ("Sam", 28, "sam@email.com"), ("Alice", 33, "alice@email.com"), ("Kate", 21, "kate@email.com"), ("Ann", 24, "ann@email.com"), ("Mike", 34, "mike@email.com"), ("Alex", 52, "alex@email.com"), ("Jess", 28, "jess@email.com"), ] # определяем столбцы columns = ("name", "age", "email") tree = ttk.Treeview(columns=columns, show="headings") tree.grid(row=0, column=0, sticky="nsew") # определяем заголовки tree.heading("name", text="Имя", anchor=W) tree.heading("age", text="Возраст", anchor=W) tree.heading("email", text="Email", anchor=W) tree.column("#1", stretch=NO, width=70) tree.column("#2", stretch=NO, width=60) tree.column("#3", stretch=NO, width=100) # добавляем данные for person in people: tree.insert("", END, values=person) # добавляем вертикальную прокрутку scrollbar = ttk.Scrollbar(orient=VERTICAL, command=tree.yview) tree.configure(yscroll=scrollbar.set) scrollbar.grid(row=0, column=1, sticky="ns") root.mainloop()
Creating a Tkinter Table
You can use the GUI as standalone or integrated applications in a wider variety of applications.
This tutorial shows how to create a Tkinter table in Python, and also, we will discuss an approach related to the Tkinter table in Python.
Use Entry Widget to Create Table in Tkinter
Tkinter helps create tables, but it does not provide a user interface for the table widget. You can create a table by repeatedly displaying entry widgets in rows and columns.
However, to make a table with six rows and four columns, we will have to use a for loop (see below).
for i in range(6): for j in range(4):
We need to create an Entry widget within these loops by creating an Entry class object (see below).
entry= Entry(gui, width=22, fg='blue', font=('Arial', 15, 'bold')
Now, we need to set this intersection in the rows and columns. This can be done using a grid() method, in which we can pass row and column as arguments, such as below.
# here row and column indicate # row and column positions entry.grid(row=row, column=column)
Now we can use the insert() method to insert data into the Entry widget (see below).
The insert() method takes two parameters, END and data . The End parameter is responsible for adding continuous data at the end of the previous data in the Entry() widget.
You will create the data parameter by yourself; it can be a list, Excel sheet or database.
This is a logical approach used in the system below using data from the list. In this code, we take a list containing 6 tuples, and each contains four values holding the Employee id , Name , City and Age .
So, we will have a table with 6 rows and 4 columns in each row. This program can also be used with an Excel sheet or database to display all data in a table format.
from tkinter import * # Table class class Table: # Initialize a constructor def __init__(self, gui): # An approach for creating the table for i in range(total_rows): for j in range(total_columns): print(i) if i ==0: self.entry = Entry(gui, width=20, bg='LightSteelBlue',fg='Black', font=('Arial', 16, 'bold')) else: self.entry = Entry(gui, width=20, fg='blue', font=('Arial', 16, '')) self.entry.grid(row=i, column=j) self.entry.insert(END, employee_list[i][j]) # take the data employee_list = [('ID', 'Name', 'City', 'Age'), (1, 'Gorge', 'California', 30), (2, 'Maria', 'New York', 19), (3, 'Albert', 'Berlin', 22), (4, 'Harry', 'Chicago', 19), (5, 'Vanessa', 'Boston', 31), (6, 'Ali', 'Karachi', 30)] # find total number of rows and # columns in list total_rows = len(employee_list) total_columns = len(employee_list[0]) # create root window gui = Tk() table = Table(gui) gui.mainloop()
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.