遍历列表并通过 create_text 输出

Iterating through a list and outputting it through create_text

我在使用 tkinter 的 create_text 时遇到了一些问题。我正在尝试遍历列表并让 create_text 逐一输出列表中的每个项目。我无法弄清楚,因为每次我尝试过,它都不会按照我想要的方式工作。下面是一些说明问题的代码:

class GUI(Frame):
    def __init__(self, master):
        self.test_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        self.c = Canvas(master, width=300, height=300)
        self.c.pack()

    for items in self.test_list:
        items = items

    for i in range(0, 300, 100):
        for j in range(0, 300, 100):
            self.c.create_text(j + 25, i + 20, text=items)

root = Tk()
root.title("Test")
root.geometry("300x300")
GUI(root)
mainloop()

谢谢你,感谢你的帮助。

您的代码有严重的缩进问题。
此外,您没有在任何对象上调用 mainloop
然后,canvas 上的对象的位置在可见 window:

之外

我修复了代码以便它运行,并在 canvas 上显示一些内容;从那里,您可以修改它以满足您的需要。

import tkinter as tk


class GUI(tk.Frame):
    def __init__(self, master):
        self.test_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        self.c = tk.Canvas(master, width=300, height=300)
        self.c.pack()

        for idx, elt in enumerate(self.test_list):
            row = (idx // 3 + 5) * 20
            col = (idx % 3 + 5) * 20

            self.c.create_text(row, col, text=elt)


if __name__ == '__main__':

    root = tk.Tk()
    root.title("Test")
    root.geometry("300x300")
    GUI(root)
    root.mainloop()

这有两个外循环。

# iterates, items == 9 now
for items in self.test_list:
    items = items


# uses 9 over and over
for i in range(0, 300, 100):
    for j in range(0, 300, 100):
        self.c.create_text(j + 25, i + 20, text=items)

也许试试这个。

for items in self.test_list:
    for i in range(0, 300, 100):
        for j in range(0, 300, 100):
            self.c.create_text(j + 25, i + 20, text=items)