Python 为什么不是';t tk.IntVar是否为第二个tk窗口工作?

Python 为什么不是';t tk.IntVar是否为第二个tk窗口工作?,python,tkinter,python-3.3,tk,Python,Tkinter,Python 3.3,Tk,我正在尝试使用tk.Scale来更改tk.IntVar。我可以在第一个tk窗口上做,但在第二个窗口上做不到。为什么? 看看这个可怜的例子: import tkinter as tk # main root root = tk.Tk() myvar = tk.IntVar() def on_change(*args): print("Value changed to {}".format(myvar.get())) myvar.trace("w", on_change) sc =

我正在尝试使用tk.Scale来更改tk.IntVar。我可以在第一个tk窗口上做,但在第二个窗口上做不到。为什么?

看看这个可怜的例子:

import tkinter as tk

# main root
root = tk.Tk()

myvar = tk.IntVar()

def on_change(*args):
   print("Value changed to {}".format(myvar.get())) 

myvar.trace("w", on_change)

sc = tk.Scale(root, from_=1, to=10, orient=tk.HORIZONTAL, length=320, \
    variable=myvar)
sc.grid()

# second root
root2 = tk.Tk()

myvar2 = tk.IntVar()

def on_change2(*args):
   print("Value2 changed to {}".format(myvar2.get())) 

myvar2.trace("w", on_change2)

sc2 = tk.Scale(root2, from_=1, to=10, orient=tk.HORIZONTAL, length=320, \
    variable=myvar2)
sc2.grid()

root.mainloop()
我做错了什么?
我正在Mac上使用python 3.3。

不能在同一线程中同时运行两个
tkinter.Tk
实例。他们不会正确地共享Tcl解释器,而首先创建的解释器将始终充当主窗口

要解决此问题,请将
root2
作为以下内容的实例:


tkinter.Toplevel
窗口将依赖于
tkinter.Tk
一个,这意味着它将共享为后者启动的Tcl解释器。

不能在同一线程中同时运行两个
tkinter.Tk
实例。他们不会正确地共享Tcl解释器,而首先创建的解释器将始终充当主窗口

要解决此问题,请将
root2
作为以下内容的实例:

tkinter.Toplevel
窗口将依赖于
tkinter.Tk
one,这意味着它将共享为后者启动的Tcl解释器

root2 = tk.Toplevel()