Python Tkinter故障-未定义名称框架
这是我一直关注的youtube教程: 这就是不断发生的错误:Python Tkinter故障-未定义名称框架,python,tkinter,Python,Tkinter,这是我一直关注的youtube教程: 这就是不断发生的错误: import Tkinter class Application(Frame): def __init__(self, master): Frame.__init__(self,master) self.grid() self.CreateWidgets() def CreateWidgets(self): self.LoginButton = Butt
import Tkinter
class Application(Frame):
def __init__(self, master):
Frame.__init__(self,master)
self.grid()
self.CreateWidgets()
def CreateWidgets(self):
self.LoginButton = Button(Self)
self.LoginButton["text"] = "Login"
self.LoginButton.grid()
self.QUIT_Button = Button(self)
self.QUIT_Button["text"] = "Quit"
self.QUIT_Button["command"] = self.quit
self.QUIT_Button["fg"] = "red"
root = Tk()
root.title("Login")
root.geometry("500x500")
app = Application(root)
root.mainloop()
回溯(最近一次呼叫最后一次):
文件“C:\Users\omer\Desktop\test.py”,第3行,在
课程申请(框架):
NameError:未定义名称“Frame”
我在Python方面是个十足的新手,我还在学习,所以如果有任何帮助,我将不胜感激。您必须导入
Frame
,才能像现在这样使用它。目前,您已经导入了Tkinter
,但这并不能让您访问Frame
、按钮
或Tk
您使用它们的方式。但你要么需要做:
Traceback (most recent call last):
File "C:\Users\omer\Desktop\test.py", line 3, in <module>
class Application(Frame):
NameError: name 'Frame' is not defined
或
来自Tkinter import的*
(*在本例中表示“全部”,但仅使用少数模块时不需要)
或者,您可以将导入语句保持原样(import Tkinter
),并按如下方式更改代码:
from Tkinter import Frame
及
但是,我建议,如果您这样做,您应该:
self.LoginButton = Tkinter.Button(Self)
这样,您可以执行tk.Frame
和tk.Button
等操作
对于要从Tkinter使用的任何模块,也需要以相同的方式导入它们
您可以这样执行单行导入:
import Tkinter as tk
查看有关在Python中导入的信息:您需要导入
框架
,按钮
,Tk
您可以从Tkinter
显式导入它们:
from Tkinter import Tk, Frame, Button etc.
或者从Tkinter
导入所有内容(即:
或者让导入保持原样(import Tkinter
),并从Tkinter
命名空间中获取Frame
、按钮
和Tk
,例如对于Frame
:
from Tkinter import *
更好的方法是以一种通用的方式导入tkinter,这种方式将同时适用于python2和python3:
class Application(Tkinter.Frame):
此外,您还有一个输入错误,请替换(注意
Self
):
与:
Frame
Tk
和按钮
都位于Tkinter
命名空间中。因此,您必须对它们进行限定,以便让Python知道它们的位置1:
也可以直接导入名称:
import Tkinter
class Application(Tkinter.Frame):
...
Tkinter.Frame.__init__(self, master)
...
self.LoginButton = Tkinter.Button(self)
...
self.QUIT_Button = Tkinter.Button(self)
...
root = Tkinter.Tk()
1如果您决定使用第一种解决方案,最好像这样导入
Tkinter
:
from Tkinter import Frame, Tk, Button
这样,代码就变成了:
import Tkinter as tk
这要简单得多。虽然有点晚了,但对于有相同错误的人,请确保文件夹中没有
tkinter.py
文件。我也有同样的错误。我的问题是,我有一个名为tkinter.py的文件,它覆盖了内置文件tkinter
。为了修复它,我将我的文件名改成了其他文件名。为了使代码更简洁,我建议将Tkinter作为tk导入;tk.框架(…);按钮(…)代码>等。
self.LoginButton = Button(Self)
self.LoginButton = Button(self)
import Tkinter
class Application(Tkinter.Frame):
...
Tkinter.Frame.__init__(self, master)
...
self.LoginButton = Tkinter.Button(self)
...
self.QUIT_Button = Tkinter.Button(self)
...
root = Tkinter.Tk()
from Tkinter import Frame, Tk, Button
import Tkinter as tk
import Tkinter as tk
class Application(Tkinter.Frame):
...
tk.Frame.__init__(self, master)
...
self.LoginButton = tk.Button(self)
...
self.QUIT_Button = tk.Button(self)
...
root = tk.Tk()