2 回答

TA贡献1796条经验 获得超10个赞
Tkinter 是一个多层次的东西。尽管您在 Python 中使用它,但它实际上使用另一种语言 Tcl 来管理 GUI。
你得到那个错误信息
AttributeError: 'NoneType' object has no attribute '_root'
因为您试图在启动 Tcl 解释器之前创建一个 Tkinter 对象,这在您执行root=Tk()
.
所以你需要重新组织你的代码,以便
character = StringVar()
在你做之前不会被执行root=Tk()
。
character = StringVar()
导入时会执行该操作screenvalue
。您可以将 import 语句移动到 之后root=Tk()
,但最好进行更改,screenvalue
以便在导入时它不会运行代码。
FWIW,character.set("4")
退货None
,所以没有在具有函数返回的是多点。此外,回调函数返回有用的值也没有意义,因为您无法访问回调返回的值。

TA贡献1887条经验 获得超5个赞
您在第二个文件中创建和导入character = StringVar()的type函数范围之外进行了定义。在命令中,from typing import type您仅导入type具有其作用域的函数,character而未在其中定义,这会导致您遇到错误。
如果您character = StringVar()进入函数的范围,它将解决您的问题。
def type():
character = StringVar()
return character.set("4")
PS强烈建议不要使用影响python内置名称的变量和函数名称,例如'type'。
添加回答
举报