【发布时间】:2021-04-13 13:26:04
【问题描述】:
该示例显示三个具有相同内容的帧。我需要遍历任意数量的不同数据集:(img_file, name and color)
{
import tkinter as tk
from tkinter import *
from tkinter import ttk
from PIL import Image, ImageTk
class TestFrame(tk.Frame):
def __init__(self):
super().__init__()
image = Image.open(img_file)
stamp = ImageTk.PhotoImage(image)
labelImage = ttk.Label(self, image=stamp)
labelImage.grid(row=0, column=0, rowspan=3)
labelImage.image = stamp
ttk.Label(self, text=name).grid(row=3, column=0)
ttk.Label(self, text=color).grid(row=1, column=2)
ttk.Label(self, text='Value: ').grid(row=0, column=1)
ttk.Label(self, text='Color: ').grid(row=1, column=1)
ttk.Label(self, text='Size: ').grid(row=2, column=1)
class TestMainApplication(tk.Tk):
def __init__(self):
super().__init__()
self.title("Test Application")
self.testFrame1 = TestFrame()
self.testFrame2 = TestFrame()
self.testFrame3 = TestFrame()
self.testFrame1.grid(row=0, column=0, rowspan=3, columnspan=3, sticky='nsew')
self.testFrame2.grid(row=3, column=0, rowspan=3, columnspan=3, sticky='nsew')
self.testFrame3.grid(row=0, column=3, rowspan=2, columnspan=3, sticky='nsew')
img_file = 'myfile.jpg'
name = 'Flying Post Horn'
color = 'Orange Brown'
if __name__ == "__main__":
TestMainApplication().mainloop()
}
框架网格化“self.testFrame1.grid(row=0, column=0, rowspan=3, columnspan=3,sticky='nsew')" 应该由变量控制,例如行=r 列=c 在我看来,困难在于如何在类之间传递必要的信息。
【问题讨论】:
-
你想要发生什么?你试过什么?
-
让数据 img_file、name 和 color 成为给定长度的列表。我试图将列表放在 TestMainApplication 中,但这会导致“NameError:name 'img_file' is not defined”
-
让数据 img_file、name 和 color 成为给定长度的列表。我试图将列表放在 TestMainApplication 中,但这会导致“NameError: name 'img_file' is not defined” 我想遍历列表并将框架及其标签小部件放置在有序的行和列中。实验室的内容必须相应更新。由于示例中的框架总是包含三个标签,我认为为此定义一个类是个好主意。我可以通过将所有内容放在一个类 (Appwindow()) 中轻松完成这项工作,其中列表在类外部定义。