NameError:未定义名称“Frame”(Python)

时间:2017-09-16 09:13:38

标签: python tkinter nameerror

我构建了一个消息传递应用程序,但似乎语法不正确:

 from tkinter import messagebox


from AESEncDec import *
from MD5Hashing import *
from RSAEncDec import *

color = 'lightblue' #color our background


class Application(Frame):

    def __init__(self, root=None):

        Frame.__init__(self, root)
        self.frame_width = 700
        self.frame_height = 400

        # Set configuration our frame
        self.config(width = self.frame_width, height = self.frame_height, bg = color) 
        self.pack()

        # Create textBox for input data
        self.textbox_one = Text()
        self.textbox_one.place(x = 30, y = 170, height = 200, width = 300 )

        # Create textBox for result
        self.textbox_two = Text()
        self.textbox_two.place(x = 370, y = 170, height = 200, width = 300 )

        label_input_text = Label( text = "Input text: ", bg = color)
        label_input_text.place(x = 30, y = 155, height = 10, width = 70 )

在执行期间,我收到以下错误:

  

追踪(最近一次通话):         文件“/ home / artur / Documents / MScProject / MSc Project / Task#179276 / main_program.py”,第11行,in           类应用程序(框架):       NameError:名称'Frame'未定义

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

Frametkinter模块中的一个类。

修复:

from tkinter import Frame

请参阅官方文档中的示例:https://docs.python.org/3.7/library/tkinter.html#a-simple-hello-world-program

您还需要导入TextLabel

from tkinter import Frame
from tkinter import Text
from tkinter import Label

或者:

from tkinter import *

以下是修复代码的方法(我删除了未使用的导入):

import tkinter

color = 'lightblue'  # color our background


class Application(tkinter.Frame):
    def __init__(self, root=None):
        super(Application, self).__init__(root)
        self.frame_width = 700
        self.frame_height = 400

        # Set configuration our frame
        self.config(width=self.frame_width, height=self.frame_height, bg=color)
        self.pack()

        # Create textBox for input data
        self.textbox_one = tkinter.Text()
        self.textbox_one.place(x=30, y=170, height=200, width=300)

        # Create textBox for result
        self.textbox_two = tkinter.Text()
        self.textbox_two.place(x=370, y=170, height=200, width=300)

        label_input_text = tkinter.Label(text="Input text: ", bg=color)
        label_input_text.place(x=30, y=155, height=10, width=70)


root = tkinter.Tk()
app = Application(root)
app.mainloop()