【问题标题】:Python class returns AttributeError when trying to assign variable尝试分配变量时,Python 类返回 AttributeError
【发布时间】:2015-03-31 17:14:33
【问题描述】:

我遇到了一个非常简单的课程:

class LanguageFile:
    def __init__(self, cont):
        print(cont)
        self.var = StringVar()
        #(self.var).set(cont)
        #print(self.var)

self.var = StringVar() 已经给了我一个很好的错误:

AttributeError: 'NoneType' object has no attribute 'tk'.

我已经尝试了我能想到的一切,但到目前为止没有任何效果。最让我困惑的是,另一个具有基本完全相同结构的类工作得很好:

class Spinboxes(Spinbox):
    def __init__(self, master):
        self.var = IntVar()
        Spinbox.__init__(self, master, textvariable = self.var,
                         from_ = 0, to = 100, command = crossover)
        self.config(width = "4")
        self.bind("<Return>", update_config)

这两个类有什么区别?

【问题讨论】:

  • 你没有显示的代码肯定还有更多,因为tk根本没有出现在你的代码中。
  • @BrenBarn 标签tkinter 暗示了这一点,但我同意OP 应该发布import 声明...
  • 如果你在stackoverflow上搜索过确切的错误信息,第一个结果就是问题的答案。
  • 是的,代码大约有 800 行,我试图只发布相关部分。看起来替换初始化行效果很好,但它是如何连接到 tkinter 的呢?
  • @BryanOakley 你是这个意思吗? stackoverflow.com/questions/3966475/… 我前段时间就找到了,但不明白如何用这些信息修改我的代码。

标签: python class tkinter attributeerror


【解决方案1】:

你必须先调用Tk()来初始化tkinter:

from Tkinter import StringVar, Tk

class LanguageFile:
    def __init__(self, cont):
        Tk()
        print(cont)
        self.var = StringVar()

【讨论】:

  • 嗯,既然你提到了 tkinter,我通过替换初始化行解决了这个问题:str01 = LanguageFile(strings[0])。 (它最初放在 tkinter GUI 之前,但现在我把它放在下面很远的地方)。但是我不太明白这与 tkinter 有什么关系?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 2020-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多