【问题标题】:NameError: name 'tk' is not defined in the object classNameError:名称“tk”未在对象类中定义
【发布时间】:2017-09-16 12:37:11
【问题描述】:

我已经构建了一个应用,源码是这样开始的:

from tkinter import Text
from tkinter import Label    

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

但最后一段无法执行:

#create object TK class
the_window = Tk(className = " Cryptographic")
#create object Application
app = Application(the_window)
#run our Application
app.mainloop()

它给出了 NameError:

Traceback(最近一次调用最后一次): 文件“/home/artur/Documents/MScProject/MSc Project/Task #179276/main_program.py”,第 169 行,在 the_window = Tk(className = "加密") NameError: 名称“Tk”未定义

在这种情况下我应该如何正确定义它?

【问题讨论】:

  • 需要导入Tk吗?
  • 您确实意识到这与您的previous question 的问题完全相同,只是您忘记导入的名称不同?

标签: python tkinter nameerror


【解决方案1】:

您错过了一条导入语句:from tkinter import Tk

避免冲突的最佳方法是导入整个模块,最终使用别名使其简短(但不要忘记在您调用 tkinter 小部件的任何地方添加 tk.):

import tkinter as tk

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

color = 'lightblue' #color our background

class Application(tk.Frame):

    def __init__(self, root=None):

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


#create object TK class
the_window = tk.Tk(className = " Cryptographic")
#create object Application
app = Application(the_window)
#run our Application
app.mainloop()

【讨论】:

  • 它给出了一个新的错误错字: Traceback(最近一次调用最后一次):文件“/home/artur/Documents/MScProject/MSc Project/Task #179276/main_program.py”,第 170 行,在 the_window = Tk(className = " Cryptographic") TypeError: 'module' object is not callable 输入有什么问题?
  • 注意import tkinter as tk中使用的小写字母,然后你需要tk.Tk(className = " Cryptographic")Tk 是主类,tk 是模块,抱歉混淆了别名,这很常见
  • 好吧,我已经将开头部分改为将 tkinter 作为 Tk,最后一部分改为:#create object TK class the_window = tk.Tk(className = " Cryptographic") #create object Application app = Application( the_window) #run our Application app.mainloop() 我仍然得到同样的错误:(
  • 最好使用import tkinter as tk 而不是import tkinter as Tk
猜你喜欢
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
相关资源
最近更新 更多