Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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
与'有关的问题;StringVar';在Python程序中_Python_String_User Interface_Widget_Tkinter - Fatal编程技术网

与'有关的问题;StringVar';在Python程序中

与'有关的问题;StringVar';在Python程序中,python,string,user-interface,widget,tkinter,Python,String,User Interface,Widget,Tkinter,我正在尝试使用Tkinter用Python编写一个非常简单的UI。我在StringVar类中遇到了一个小问题。问题是,当我运行python脚本时,在初始化StringVar变量的行上出现了一个错误。我已经针对这个问题编写了一个示例程序,我想开始工作: from Tkinter import * var = StringVar() var.set('test'); 在python中运行时,我看到以下错误: $ python test.py Traceback (most recent call

我正在尝试使用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 test.py
回溯(最近一次呼叫最后一次):
文件“test.py”,第3行,在
var=StringVar()
文件“/usr/lib/python2.6/lib-tk/Tkinter.py”,第254行,在__
变量。\uuuu init\uuuuu(self、master、value、name)
文件“/usr/lib/python2.6/lib-tk/Tkinter.py”,第185行,在__
self.\u tk=master.tk
AttributeError:“非类型”对象没有属性“tk”
异常AttributeError:“StringVar实例在已忽略的

我觉得这是Python安装的一个问题,但可能是我做错了什么?我在Ubuntu Linux上使用的是python 2.6.5版,如果这有什么不同的话。

我自己从来没有对Tkinter做过任何事情,但这里看起来这个StringVar类继承自一个基本变量类,正如您在调用
变量的回溯中所看到的那样。\uu init\uuu()
。异常是由语句“self.tk=master.tk”引发的。下面的错误消息表明这个“master”参数是非类型的,因此没有这样的tk属性。在这里查看StringVar的Tkinter文档:


主参数默认设置为“无”。看起来master应该作为一个可能包含这个StringVar的小部件提供(即,让StringVar不与小部件关联是否有意义?)。我不得不说,您最肯定需要将StringVar对象与小部件相关联,使其具有“tk”属性。

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

只要这样做:

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

为什么在创建
StringVar
对象之前必须显式调用
Tk()