python - 为什么 Tkinter 只能在交互式环境中工作?
python - why does Tkinter work only in interactive environments?
我刚开始尝试使用 Tkinter,由于我注意到的一些特殊性,我有一些问题。
首先,我尝试使用交互式 python 环境并输入以下内容:
>>> import tkinter
>>> win = tkinter.Tk()
一个新的 window 正确地出现在我的屏幕上。
然后我尝试创建一个 .py 脚本:
import tkinter
win = tkinter.Tk()
这是我得到的错误
Traceback (most recent call last):
File "tkinter.py", line 1, in <module>
import tkinter
File "/home/***/tests/tkinter.py", line 2, in <module>
win = tkinter.Tk()
AttributeError: module 'tkinter' has no attribute 'Tk'
我无法解释:为什么 tkinter 模块存在并且在交互式环境中工作正常,但如果我将代码放入脚本中它会失败?顺便说一句,我 运行 使用命令 python3.7 tkinter.py
的脚本,我使用命令 python3.7
来 运行 交互式 python shell.
之后我尝试了一个更简单的程序(在同一个脚本中,但是我删除了创建的 pycache 文件夹:我必须承认我在这里写的时候忽略了它的目的) :
import tkinter
print("Hello")
打印 hello 两次。所以我删除了 import tkinter
行。它只打印一次 Hello。
我真的无法解释这种奇怪的行为。我正在寻找可以的人。
谢谢。
根据异常详细信息,当 "tkinter.py" 中的 运行 import tkinter
行时,您正在将自己的 "tkinter.py" 文件作为模块而不是 Tkinter 库导入。 Tk()
未在您的 "tkinter.py" 文件中定义,调用它会导致 AttributeError
。同样的事情发生在第二个例子 print("Hello")
- 它运行两次:第一次,当你导入你的文件时,第二次,当你在这之后调用 print("Hello")
时。
将您的文件从 "tkinter.py" 重命名为其他名称,例如"my_example.py" 解决这个问题。
我刚开始尝试使用 Tkinter,由于我注意到的一些特殊性,我有一些问题。
首先,我尝试使用交互式 python 环境并输入以下内容:
>>> import tkinter
>>> win = tkinter.Tk()
一个新的 window 正确地出现在我的屏幕上。
然后我尝试创建一个 .py 脚本:
import tkinter
win = tkinter.Tk()
这是我得到的错误
Traceback (most recent call last):
File "tkinter.py", line 1, in <module>
import tkinter
File "/home/***/tests/tkinter.py", line 2, in <module>
win = tkinter.Tk()
AttributeError: module 'tkinter' has no attribute 'Tk'
我无法解释:为什么 tkinter 模块存在并且在交互式环境中工作正常,但如果我将代码放入脚本中它会失败?顺便说一句,我 运行 使用命令 python3.7 tkinter.py
的脚本,我使用命令 python3.7
来 运行 交互式 python shell.
之后我尝试了一个更简单的程序(在同一个脚本中,但是我删除了创建的 pycache 文件夹:我必须承认我在这里写的时候忽略了它的目的) :
import tkinter
print("Hello")
打印 hello 两次。所以我删除了 import tkinter
行。它只打印一次 Hello。
我真的无法解释这种奇怪的行为。我正在寻找可以的人。
谢谢。
根据异常详细信息,当 "tkinter.py" 中的 运行 import tkinter
行时,您正在将自己的 "tkinter.py" 文件作为模块而不是 Tkinter 库导入。 Tk()
未在您的 "tkinter.py" 文件中定义,调用它会导致 AttributeError
。同样的事情发生在第二个例子 print("Hello")
- 它运行两次:第一次,当你导入你的文件时,第二次,当你在这之后调用 print("Hello")
时。
将您的文件从 "tkinter.py" 重命名为其他名称,例如"my_example.py" 解决这个问题。