尝试在 Tkinter 中调用我的模型,但不会等到单击按钮

问题描述

这是我尝试并最终得到的。我试图在 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 大写

希望这有帮助!