Python 程序中'StringVar'的问题



我正在尝试使用Tkinter在Python中编写一个非常简单的UI。我在StringVar课上遇到了一个小问题。问题是,当我运行python脚本时,我在初始化StringVar变量的行上得到一个错误。我已经写了一个关于这个问题的示例程序,我想让它工作:

from Tkinter import *
var = StringVar()
var.set('test');

当我在python中运行它时,我看到这个错误:

$ python test.py
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    var = StringVar()
  File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 254, in __init__
    Variable.__init__(self, master, value, name)
  File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 185, in __init__
    self._tk = master.tk
AttributeError: 'NoneType' object has no attribute 'tk'
Exception AttributeError: "StringVar instance has no attribute '_tk'" in <bound method StringVar.__del__ of <Tkinter.StringVar instance at 0xb73cc80c>> ignored

我有一种感觉,这是一个问题与我的Python安装,但它可能是我做错了什么?如果有区别的话,我在Ubuntu Linux上使用python 2.6.5。

我认为您可能需要在调用StringVar之前显式调用Tk()。

就这样做:

from Tkinter import *
Tk() # Add this
var = StringVar()
var.set('test');

我自己从来没有用Tkinter做过任何事情,但是这里看起来这个StringVar类继承自一个基变量类,正如您可以在对Variable.__init__()调用的回溯中看到的那样。异常是由语句"self"引发的。Tk = master.tk"。下面的错误消息表明这个"主"参数是NoneType,因此没有tk属性。查看StringVar的Tkinter文档:http://epydoc.sourceforge.net/stdlib/Tkinter.StringVar-class.html

主参数默认为None。看起来master应该作为一个可能包含这个StringVar的小部件提供(也就是说,有一个StringVar不与小部件关联有意义吗?)我不得不说,您绝对需要将StringVar对象与小部件关联起来,以便它具有'tk'属性。

相关内容

  • 没有找到相关文章

最新更新