为什么我的矩阵标签没有显示列表中的数字?
why is my matrix labels not showing the numbers from the list?
使用此代码,方框显示全 0。我不确定为什么它没有在列表中显示序列。它应该在[0,0]的位置显示“1”,在[0,1]的位置显示“3”,在[0,2]的位置显示“2”......等等,直到它填满所有9个数字在9个盒子里。
import tkinter as tk
the_list = (1, 3, 2, 4, 12, 56, 7, 10, 19)
var_categories = {}
def main():
root = tk.Tk()
root.title("class basic window")
root.geometry("500x300")
root.config(background="LightBlue4")
app = Application(root)
root.mainloop()
class Application(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent, bg="ivory2", bd=2, relief=tk.RAISED)
self.parent = parent
self.pack(fill=tk.BOTH, expand=1)
self.initUI()
def initUI(self):
iterator = iter(the_list)
for r in range(3):
for c in range(3):
item = next(iterator)
self.labelVariable = tk.IntVar()
self.label = tk.Label(self, textvariable=self.labelVariable, relief="ridge",width=8, height=3 )
self.label.grid(row=r, column=c, sticky='news')
var_categories[item] = self.labelVariable
if __name__ == '__main__':
main()
主要问题出在函数 initUI
中:当您创建一个 IntVar
时,您必须使用它的 set
方法设置它的值。另外,我猜你的 var_categories
字典应该按它在矩阵中的位置索引,而不是按矩阵单元格的内容索引,对吗?这是提供您想要的输出的修改函数:
def initUI(self):
iterator = iter(the_list)
for r in range(3):
for c in range(3):
item = next(iterator)
var_categories[r,c] = tk.IntVar()
var_categories[r,c].set(item)
self.label = tk.Label(self, textvariable=var_categories[r,c], relief="ridge",width=8, height=3)
self.label.grid(row=r, column=c, sticky='news')
使用此代码,方框显示全 0。我不确定为什么它没有在列表中显示序列。它应该在[0,0]的位置显示“1”,在[0,1]的位置显示“3”,在[0,2]的位置显示“2”......等等,直到它填满所有9个数字在9个盒子里。
import tkinter as tk
the_list = (1, 3, 2, 4, 12, 56, 7, 10, 19)
var_categories = {}
def main():
root = tk.Tk()
root.title("class basic window")
root.geometry("500x300")
root.config(background="LightBlue4")
app = Application(root)
root.mainloop()
class Application(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent, bg="ivory2", bd=2, relief=tk.RAISED)
self.parent = parent
self.pack(fill=tk.BOTH, expand=1)
self.initUI()
def initUI(self):
iterator = iter(the_list)
for r in range(3):
for c in range(3):
item = next(iterator)
self.labelVariable = tk.IntVar()
self.label = tk.Label(self, textvariable=self.labelVariable, relief="ridge",width=8, height=3 )
self.label.grid(row=r, column=c, sticky='news')
var_categories[item] = self.labelVariable
if __name__ == '__main__':
main()
主要问题出在函数 initUI
中:当您创建一个 IntVar
时,您必须使用它的 set
方法设置它的值。另外,我猜你的 var_categories
字典应该按它在矩阵中的位置索引,而不是按矩阵单元格的内容索引,对吗?这是提供您想要的输出的修改函数:
def initUI(self):
iterator = iter(the_list)
for r in range(3):
for c in range(3):
item = next(iterator)
var_categories[r,c] = tk.IntVar()
var_categories[r,c].set(item)
self.label = tk.Label(self, textvariable=var_categories[r,c], relief="ridge",width=8, height=3)
self.label.grid(row=r, column=c, sticky='news')