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()
这是我一直在关注的YouTube教程:https://www.youtube.com/watch?v=YCLTv6wh3jE&index=39&list=PLB0701884E5AE1B45
这就是不断发生的错误:
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
我在Python方面完全是个新手,还在学习中,所以任何帮助都将不胜感激。
5条答案
按热度按时间ckx4rj1h1#
Frame
Tk
和Button
都位于Tkinter
命名空间中,因此,必须对它们进行限定,以便Python知道它们的位置1:也可以直接导入名称:
1如果您决定使用第一种解决方案,最好按如下方式导入
Tkinter
:这样,代码就变成了:
这要简短得多。
pkbketx92#
您需要导入
Frame
、Button
和Tk
。您可以从
Tkinter
显式导入所有这些文件:或导入
Tkinter
(即not a good thing to do)中的所有内容:或者让导入保持原样(
import Tkinter
),并从Tkinter
命名空间获取Frame
、Button
和Tk
,例如对于Frame
:更好的方法是以一种通用的方式导入tkinter,它对python2和python3都有效:
此外,您有一个错别字,更换(手表
Self
):与:
bweufnob3#
您必须导入
Frame
才能像现在这样使用它。目前您已经导入了Tkinter
,但这并不能给予您以您使用它们的方式访问Frame
,Button
或Tk
。但您需要执行以下操作:或
from Tkinter import *
(* 在本例中表示“全部”,但在仅使用少数模块时不需要)或者,您可以保留import语句不变(
import Tkinter
),并将代码更改为:以及
但是,我会建议,如果你这样做,你做:
这样,您就可以执行
tk.Frame
和tk.Button
等操作。对于任何您想从Tkinter使用的模块,您也需要以相同的方式导入它们。
您可以执行单行导入,如下所示:
查看以下关于Python导入的信息:http://effbot.org/zone/import-confusion.htm
3qpi33ja4#
好吧,这是有点晚,但对于有同样错误的人,请确保文件夹中没有
tkinter.py
文件。uinbv5nw5#
我也有同样的错误。我的问题是我有一个名为
tkinter.py
的文件,它覆盖了内置文件tkinter
。所以为了修复它,我把文件名改为其他文件。