我在python3中有一个通过模块调用子程序的主程序。这很好,除了我的模块在模块中的其他地方进行更改时不会更新Entry字段。模块显示值被放在正确的位置,但窗口没有更新。以下是主程序的示例: -
# test - master
from tkinter import *
root=Tk()
root.title("Test for the update problem")
import changeEntryfield
changeEntryfield.fun() # call to function inside module
root.mainloop()
# end of master program
以下是调用的模块(存储为" changeEntryfield.py"): -
def fun():
import tkinter
win=tkinter.Tk() # start a window
g3=tkinter.StringVar()
g3.set("text")
a="something"
field=tkinter.Entry(win,width=10,textvariable=g3)
field.grid(column=1,row=0,sticky='W',padx=5,pady=5)
grpslab3=tkinter.Label(win,text="The Field is: ")
grpslab3.grid(column=0,row=0,sticky='W',padx=5,pady=5)
# now do changes to field value
g3.set(a)
print ("1. In Entry, field = ",field['textvariable'])
field['textvariable']=g3.get()
print ("2. In Entry, field = ",field['textvariable'])
field.config(textvariable=g3.get())
print ("3. In Entry, field = ",field['textvariable'])
field['textvariable']=a
print ("4. In Entry, field = ",field['textvariable'])
win.mainloop()
# end of module
有什么建议吗?
答案 0 :(得分:0)
Tkinter不是以这种方式工作的。一个完整的程序一次只能有一个Tk
个实例。您应该在子程序中创建Toplevel
的实例。