问题描述
这是我尝试并最终得到的。我试图在 Tkinter 中调用我的模型,但它不会等到按钮被点击。
import tkinter as tk
import os
var = tk.Intvar()
root = tk.Tk()
class model():
if var == 1:
os.system('python script.py')
button = tk.Button(root,text="Click Me",command=lambda: var.set(1))
button.place(relx=.5,rely=.5,anchor="c")
print("waiting...")
button.wait_variable(var)
print("done waiting.")
以上代码的结果:
Traceback (most recent call last):
File ".\test.py",line 3,in <module>
var = tk.Intvar()
File "C:\Users\laksh\anaconda3\lib\tkinter\__init__.py",line 529,in __init__
Variable.__init__(self,master,value,name)
File "C:\Users\laksh\anaconda3\lib\tkinter\__init__.py",line 335,in __init__
self._root = master._root()
AttributeError: 'nonetype' object has no attribute '_root'```
解决方法
tk.Tk() 调用会启动 tcl 解释器,因此在调用之前不能创建 tk 对象。所以将 tk.Tk() 调用移到 tk.IntVar() 调用之上。
root = tk.Tk()
var = tk.IntVar()
,
我认为您的问题是您没有导入 Tk
模块。也尝试通过添加此行来导入 Tk。
From Tkinter import *
此外,该模块称为 Tk,因此您需要将 T
中的 tk
大写
希望这有帮助!