猿问

返回值到 tkinter 接口

我想使用 tkinter 在 python 中创建一个类似 excel 的界面,如下所示。

from tkinter import *

window=Tk()

x = [1,2,3,4]

height = 1width = 4for i in range(height):  # Rows
    for j in range(width):  # Columns
        b = Entry(window, text="")
        b.grid(row=i, column=j)
window.mainloop()

我如何将列表 x 返回到 tkinter 界面?最好每个单元格 1 个数字。那可能吗?

预期结果类似于:

慕雪6442864
浏览 92回答 2
2回答

慕妹3242003

您可以entry使用以下方式定义值insert:from tkinter import *window = Tk()x = [1, 2, 3, 4]height = 1for i in range(height):    for j, val in enumerate(x):        b = Entry(window)        b.insert(0, val)        b.grid(row=i, column=j)window.mainloop()结果:

慕哥6287543

如果您尝试模拟电子表格,则需要一种方法来寻址每一行中的小部件。一旦掌握了这些,插入、删除和获取数据就变得非常简单。最简单的方法是将条目小部件的引用存储为列表的列表,以便您可以按行号和列号引用任何单元格。cells = []for i in range(height):  # Rows    row = []    cells.append(row)    for j in range(width):  # Columns        b = Entry(window, text="")        b.grid(row=i, column=j)        row.append(b)您现在可以用来cells引用任何小部件。例如,第 0 行第 2 列的小部件将为cells[0][2]。有了这个基本结构,您现在可以轻松编写函数来一次获取或设置整行或整个区域。例如,以下是创建函数的方法set_row:def set_row(rownum, data):    row = cells[rownum]    for entry, value in zip(row, data):        entry.delete(0, "end")        entry.insert(0, value)例如,要使用以下内容设置第一 (0) 行,x您可以执行以下操作:set_row(0, x)从电子表格中获取数据也很简单:def get_data():    rows = []    for rownum in range(height):        row = []        rows.append(row)        for columnnum in range(width):            entry = cells[rownum][columnnum]            row.append(entry.get())    return rows
随时随地看视频慕课网APP

相关分类

Python
我要回答