Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter故障-未定义名称框架_Python_Tkinter - Fatal编程技术网

Python Tkinter故障-未定义名称框架

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

这是我一直关注的youtube教程:

这就是不断发生的错误:

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()