遍历列表并通过 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)
我在使用 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)