使用 Tkinter 时出现 ImportError 或 AttributeError
ImportError or AttributeError While Using Tkinter
诚然,我是 Python 的菜鸟,但我知道这里发生了一些愚蠢的事情,我在 google 上找不到任何帮助。我想做的就是将 Tkinter 用于简单的 GUI,但是当我每次尝试导入和使用一个函数时遇到导入错误时,很难做到这一点。
我按照自己的命名等教程进行了此操作:
#testUI.py
from tkinter import *
from test2 import nameit
root = Tk()
root.title('Scott Window')
root.geometry('500x350')
greet = nameit('John')
mylabel = Label(root, text=greet)
mylabel.pack(pady=20)
root.mainloop()
#test2.py
def nameit(name):
greeting = name
return greeting
使用这个会产生:
ImportError: cannot import name 'nameit' from 'test2'
我尝试过的另一种方法是只使用“导入”
from tkinter import *
import test2
root = Tk()
root.title('Scott Window')
root.geometry('500x350')
greet = test2.nameit('John')
mylabel = Label(root, text=greet)
mylabel.pack(pady=20)
root.mainloop()
这也会产生错误:
AttributeError: module 'test2' has no attribute 'nameit'
我真的不知道该怎么做,我几乎肯定这是愚蠢的事情,但我一生都无法在 google、Whosebug 或其他任何地方找到任何东西。
10000 一生繁荣,任何人都可以帮助我。谢谢!
你提供的例子对我有用,但是,这个问题可能是因为你在 test2.py
文件中进行的一些导入。
例如,在 testUI.py
中,您将导入 test2
,而在 test2.py
中,您将导入 testUI
。你需要找到办法打破这个循环,减少依赖。
示例如下:
# testUI.py
from tkinter import *
from test2 import nameit
root = Tk()
root.title('Scott Window')
root.geometry('500x350')
greet = nameit('John')
mylabel = Label(root, text=greet)
mylabel.pack(pady=20)
root.mainloop()
# test2.py
import testUI # Extra import statement
def nameit(name):
greeting = name
return greeting
当您 运行 test2.py
时,您会得到想要的结果。
但是,当您 运行 testUI.py
时,您会收到以下错误:
from test2 import nameit
ImportError: cannot import name 'nameit' from partially initialized module 'test2' (most likely due to a circular import)
诚然,我是 Python 的菜鸟,但我知道这里发生了一些愚蠢的事情,我在 google 上找不到任何帮助。我想做的就是将 Tkinter 用于简单的 GUI,但是当我每次尝试导入和使用一个函数时遇到导入错误时,很难做到这一点。
我按照自己的命名等教程进行了此操作:
#testUI.py
from tkinter import *
from test2 import nameit
root = Tk()
root.title('Scott Window')
root.geometry('500x350')
greet = nameit('John')
mylabel = Label(root, text=greet)
mylabel.pack(pady=20)
root.mainloop()
#test2.py
def nameit(name):
greeting = name
return greeting
使用这个会产生:
ImportError: cannot import name 'nameit' from 'test2'
我尝试过的另一种方法是只使用“导入”
from tkinter import *
import test2
root = Tk()
root.title('Scott Window')
root.geometry('500x350')
greet = test2.nameit('John')
mylabel = Label(root, text=greet)
mylabel.pack(pady=20)
root.mainloop()
这也会产生错误:
AttributeError: module 'test2' has no attribute 'nameit'
我真的不知道该怎么做,我几乎肯定这是愚蠢的事情,但我一生都无法在 google、Whosebug 或其他任何地方找到任何东西。
10000 一生繁荣,任何人都可以帮助我。谢谢!
你提供的例子对我有用,但是,这个问题可能是因为你在 test2.py
文件中进行的一些导入。
例如,在 testUI.py
中,您将导入 test2
,而在 test2.py
中,您将导入 testUI
。你需要找到办法打破这个循环,减少依赖。
示例如下:
# testUI.py
from tkinter import *
from test2 import nameit
root = Tk()
root.title('Scott Window')
root.geometry('500x350')
greet = nameit('John')
mylabel = Label(root, text=greet)
mylabel.pack(pady=20)
root.mainloop()
# test2.py
import testUI # Extra import statement
def nameit(name):
greeting = name
return greeting
当您 运行 test2.py
时,您会得到想要的结果。
但是,当您 运行 testUI.py
时,您会收到以下错误:
from test2 import nameit
ImportError: cannot import name 'nameit' from partially initialized module 'test2' (most likely due to a circular import)