Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python2.7 Tkinter-多窗口条目更新_Python_Python 2.7_Tkinter_Global Variables_Tkinter Entry - Fatal编程技术网

Python2.7 Tkinter-多窗口条目更新

Python2.7 Tkinter-多窗口条目更新,python,python-2.7,tkinter,global-variables,tkinter-entry,Python,Python 2.7,Tkinter,Global Variables,Tkinter Entry,我想文本显示和更新在每个窗口,而不是只有一个。我注意到工作的窗口总是第一个被调用的窗口,但这并不能帮助我解决问题 我注意到的另一件事是,程序接受在第一个位置显示值的窗口中输入新值,但通过在第二个窗口中输入值来更改de值的任何尝试都失败 以下是我的代码的简化版本: 从Tkinter导入* root=Tk() root2=Tk() de=IntVar() de.set(0) def previous(): de.set(de.get()-1) def Next(): de.set(de.get()+

我想文本显示和更新在每个窗口,而不是只有一个。我注意到工作的窗口总是第一个被调用的窗口,但这并不能帮助我解决问题

我注意到的另一件事是,程序接受在第一个位置显示值的窗口中输入新值,但通过在第二个窗口中输入值来更改
de
值的任何尝试都失败

以下是我的代码的简化版本:

从Tkinter导入*
root=Tk()
root2=Tk()
de=IntVar()
de.set(0)
def previous():
de.set(de.get()-1)
def Next():
de.set(de.get()+1)
def go_to(事件):
de.set(de.get())
button4=按钮(root2,text='Next',command=Next)
按钮4.网格(行=26,列=9,列span=2,行span=1,padx=0,pady=0,粘性=W+E+N+S)
button5=按钮(root2,text='Previous',command=Previous)
按钮5.网格(行=26,列=6,列span=2,行span=1,padx=0,pady=0,粘性=W+E+N+S)
label1=Label(root2,text='goto2')
entry1=Entry(root2,textvariable=de,bd=1,width=3)
entry1.bind(“,gou_to)
标签1.网格(行=25,列=8,列span=1,行span=1,padx=0,pady=0)
entry1.grid(行=26,列=8,列span=1,行span=1,padx=0,pady=0)
button3=按钮(根,text='Next',command=Next)
按钮3.网格(行=26,列=9,列span=2,行span=1,padx=0,pady=0,粘性=W+E+N+S)
button2=按钮(根,text='Previous',command=Previous)
按钮2.网格(行=26,列=6,列span=2,行span=1,padx=0,pady=0,粘性=W+E+N+S)
标签=标签(根,文本='转到1')
条目=条目(根,textvariable=de,bd=1,宽度=3)
entry.bind(“,go_to)
label.grid(行=25,列=8,列span=1,行span=1,padx=0,pady=0)
entry.grid(行=26,列=8,列span=1,行span=1,padx=0,pady=0)
root2.mainloop()
root.mainloop()

问题的根本原因是Tkinter没有设计为具有两个根窗口。这样做会产生一些意想不到的副作用,比如你所看到的。实际上,您可以将两个根窗口视为两个单独的进程或线程,它们不能共享信息。您的
IntVar
属于第一个窗口,但您正试图在第二个窗口中使用它


解决方法是永远不要创建一个以上的
Tk
实例。如果需要更多窗口,请创建
Toplevel
的实例。这样做,您可以在任意多个窗口中共享相同的
IntVar

太好了,您帮我省去了很多麻烦,实际上提高了我的理解力,谢谢。