Python Tkinter - 全局名称 Tk() 未定义
我在学习Python的tkinter界面时,跟着一个教程走,里面用了一段代码来声明程序的根部件,然后这个根部件下面可以有其他子部件:
root = Tk()
但是当我尝试理解这段代码时,出现了以下错误:
Global name Tk() is not defined
我觉得这个问题可能是因为tkinter自从这个教程发布以来发生了变化;我找不到其他不使用类似代码片段的教程,所以那些也不能用。
我想问的问题很简单,但我搜索后找不到答案;我该如何绕过这个问题:tkinter的语法发生了什么变化,现在声明根部件的新方法是什么?另外,如果有人知道tkinter,能不能告诉我添加子部件到根部件的方式是否也有变化?
谢谢大家的回复 ~ 迈克尔
4 个回答
1
你似乎把文件命名为 tkinter.py。你不能把文件命名为你正在导入的模块名。因为这样的话,Python会优先从你自己这个文件里导入,而不是从tkinter模块里导入。这样会造成模块名称冲突。建议你改个文件名。
2
另外,还有一种方法是
import Tkinter
或者
import Tkinter as tk
补充说明:通常,你想用这种方式来导入库:from <library> import <module>
,所以在你的具体例子中,from Tkinter import Tk
是可以的。
这样你就可以在代码中直接写 tk.Button
,而不是每次都写 Tkinter.Button
。如果你使用的是 Python 3.x,库的名字是小写的。
import tkinter
关于一般的导入问题,我在 Stack Overflow 上看到很多人提到这个链接:导入 Python 模块。
7
你可能忘了在最上面加上 from Tkinter import *
这一行代码。