Python Tkinter - 全局名称 Tk() 未定义

0 投票
4 回答
21856 浏览
提问于 2025-04-17 10:44

我在学习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 * 这一行代码。

撰写回答