gpt4 book ai didi

python - 为什么 tk.IntVar 不适用于第二个 tk 窗口?

转载 作者:行者123 更新时间:2023-11-28 22:48:55 25 4
gpt4 key购买 nike

我正在尝试使用 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 的实例:

root2 = tk.Toplevel()

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

关于python - 为什么 tk.IntVar 不适用于第二个 tk 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24561446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com