Моя программа - это редактор IFS, который имеет два окна: один для отображения фрактала, а другой для работы с соответствующим IFS. Последнее требует сетки записей, содержащих значения линейных преобразований. Поскольку мне нужно 24 записи (6 записей для каждого линейного преобразования и 4 преобразования), я определил вместо этого таблицу записей, использующую некоторые для циклов. Я знаю, что мне нужно установить textvariable в StringVar и использовать StringVar.set() для ввода некоторых значений по умолчанию, но когда я запускаю свою программу, записи все еще пусты.tkinter: значения по умолчанию не отображаются в записях даже с использованием 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() ничего не изменили). Сетки также отображаются правильно. Единственное, что неправильно, это то, что записи пусты. Что тут происходит?
Спасибо!
EDIT: Кажется, что проблема связана с двойными окнами. Сначала я определил FractalWindow, а значения по умолчанию для моих записей отображаются в FractalWindow, но не «окно». С другой стороны, если я сначала определяю «окно», появляются значения по умолчанию, но не для тех, что находятся в FractalWindow. Почему это происходит?
Это делает код более простым. Благодарю. Но у меня все еще такая же проблема. Он записывает их; Я использую function_entries [row * 6 + column] .get(), и он печатает значения. Однако номера по умолчанию не отображаются в самих виджетах. – user5644262