Какой виджет вы используете для таблицы, подобной Excel, в tkinter? - PullRequest
8 голосов
/ 26 августа 2011

Я хочу использовать табличный виджет Excel в tkinter для графического интерфейса, который я пишу. У вас есть предложения?

Ответы [ 2 ]

10 голосов
/ 24 июня 2015

Вы можете использовать Tkinter таким образом, чтобы создать простую электронную таблицу, такую ​​как gui:

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

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

def find_in_grid(frame, row, column):
    for children in frame.children.values():
        info = children.grid_info()
        #note that rows and column numbers are stored as string                                                                         
        if info['row'] == str(row) and info['column'] == str(column):
            return children
    return None

Где вы можете вызвать функцию и она вернет ребенка.Чтобы получить значение записи, вы можете использовать:

find_in_grid(root, i+1, j).get()
7 голосов
/ 26 августа 2011

Tktable является, по крайней мере, лучшим вариантом, если вам нужна полная поддержка таблиц. Вкратце, следующий пример показывает, как его использовать, если он у вас установлен. Пример для python3, но для python2 вам нужно всего лишь изменить оператор импорта.

import tkinter as tk
import tktable

root = tk.Tk()
table = tktable.Table(root, rows=10, cols=4)
table.pack(side="top", fill="both", expand=True)
root.mainloop()

Tktable может быть сложен в установке, так как нет пакета, устанавливаемого с помощью pip.

Если все, что вам действительно нужно, это сетка виджетов для отображения и редактирования данных, вы можете легко построить сетку виджетов ввода или метки. Для примера см. этот ответ на вопрос Python. GUI (матрицы ввода и вывода)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...