我制作了两个帧,其中第一帧有两个选项菜单,用于从用户那里获取有关矩阵的行和列的输入。我想从optionmenu中获取值并使用trace()方法对其进行更新,但是我不确定如何做到这一点。
第二帧是根据行和列自动生成输入字段,应根据选项菜单中的更改进行更新。 但是我的代码的问题在于,它仅采用optionmenu的默认值1。
def createmat_window():
mat = Toplevel(cal)
frame1 = Frame(mat,bg='red',width=500,height=100)
frame1.pack(fill=BOTH, expand=1)
choices = {1, 2, 3, 4, 5, 6, 7}
rowA= Label(frame1, text='MAT A\nROWS')
rowA.pack(side=LEFT,padx=10,pady=10)
pop1 = OptionMenu(frame1, opt1,*choices)
pop1.pack(side=LEFT)
opt1.set('1')
m = opt1.get()
columnA = Label(frame1, text='MAT A\nCOLUMNS')
columnA.pack(side=LEFT,padx=10,pady=10)
pop2 = OptionMenu(frame1, opt2, *choices)
pop2.pack(side=LEFT)
opt2.set('1')
n = opt2.get()
frame2 = Frame(mat, bg='yellow', width=500, height=100)
frame2.pack()
for i in range(int(m)):
for j in range(int(n)):
d = int(m)*int(n)
ent = {'ent'+str(x): StringVar() for x in range(d)}
en = ['en'+str(x) for x in range(d)]
for x in range(d):
en[x]=Entry(frame2,textvariable=ent['ent'+str(x)])
en[x].grid(row=i,column=j)