我的程序是一个IFS编辑器,它有两个窗口:一个用于显示分形,另一个用于处理相应的IFS。后者需要一个包含线性变换值的条目网格。因为我需要24个条目(每个线性变换6个条目,4个变换),所以我使用一些for循环定义了一个条目表。我知道必须将textvariable设置为StringVar并使用字符串变量集()用于输入一些默认值,但当我运行程序时,条目仍然为空。你知道吗
这就是我所拥有的。这里的“矩阵”是一个4x6浮点矩阵:
FunctionEntries=[[],[],[],[]]
FunctionSetEntries=[[],[],[],[]]
for i in range(4):
for j in range(6):
FunctionSetEntries[i]=FunctionSetEntries[i]+[Tkinter.StringVar()]
k=Tkinter.Entry(window, width="5", textvariable = FunctionSetEntries[i][j])
FunctionSetEntries[i][j].set(matrices[i][j])
FunctionEntries[i]=FunctionEntries[i]+[k]
FunctionEntries[i][j].grid(row=3+i,column=j+1)
FunctionEntries=FunctionEntries+[FunctionEntries[i]]
奇怪的是,当我单独定义其他条目时,一切正常。以下是一些正确显示默认值的条目:
P=[0.85,0.07,0.07,0.01]
probs1=Tkinter.StringVar()
probs1.set(P[0])
probs2=Tkinter.StringVar()
probs2.set(P[1])
probs3=Tkinter.StringVar()
probs3.set(P[2])
probs4=Tkinter.StringVar()
probs4.set(P[3])
probLabel=Tkinter.Label(FractalWindow, width="15")
probLabel.configure(text="probabilities= ")
probEntry1=Tkinter.Entry(FractalWindow, width= "5", textvariable = probs1)
probEntry2=Tkinter.Entry(FractalWindow, width= "5", textvariable = probs2)
probEntry3=Tkinter.Entry(FractalWindow, width= "5", textvariable = probs3)
probEntry4=Tkinter.Entry(FractalWindow, width= "5", textvariable = probs4)
最后几个是在不同的窗口,所以这是问题的一部分?但据我所知,这两个窗口的其他一切都运行良好。我也看不出我在这里所做的和在上一个例子中所做的有什么区别(条目定义和.set()的顺序没有改变任何东西)。栅格也会正确显示。唯一的错误是条目是空的。这是怎么回事?你知道吗
谢谢!你知道吗
编辑:双窗口似乎有问题。我首先定义了FractalWindow,我的条目的默认值显示在FractalWindow中,而不是“window”。另一方面,如果我先定义“窗口”,则会显示默认值,但对于FractalWindow中的那些值则不会。为什么会这样?你知道吗
FunctionSetEntries[i]=函数集条目[i]+[Tkinter.StringVar文件()]将包含一个StringVar()6次,每个“j”一次。为了简单起见,如果您使用一个包含24个条目的列表,那么您只需执行以下操作(请注意,您只需保留对条目或StringVar的引用,而不必同时保留对这两个条目的引用即可获取/设置内容)。你知道吗
好吧,我想出来了。我需要将我的一个窗口设置为Toplevel()。这使我能够在这两个地方使用StringVar。比如说
我应该做这项工作。你知道吗
相关问题 更多 >
编程相关推荐