Commit 63e583a3 authored by Guido van Rossum's avatar Guido van Rossum

Add initial values to variables to avoid crash in __del__

parent 2a3cb866
...@@ -76,6 +76,7 @@ def _exit(code='0'): ...@@ -76,6 +76,7 @@ def _exit(code='0'):
_varnum = 0 _varnum = 0
class Variable: class Variable:
_default = ""
def __init__(self, master=None): def __init__(self, master=None):
global _default_root global _default_root
global _varnum global _varnum
...@@ -85,6 +86,7 @@ class Variable: ...@@ -85,6 +86,7 @@ class Variable:
self._tk = _default_root.tk self._tk = _default_root.tk
self._name = 'PY_VAR' + `_varnum` self._name = 'PY_VAR' + `_varnum`
_varnum = _varnum + 1 _varnum = _varnum + 1
self.set(self._default)
def __del__(self): def __del__(self):
self._tk.globalunsetvar(self._name) self._tk.globalunsetvar(self._name)
def __str__(self): def __str__(self):
...@@ -93,24 +95,28 @@ class Variable: ...@@ -93,24 +95,28 @@ class Variable:
return self._tk.globalsetvar(self._name, value) return self._tk.globalsetvar(self._name, value)
class StringVar(Variable): class StringVar(Variable):
_default = ""
def __init__(self, master=None): def __init__(self, master=None):
Variable.__init__(self, master) Variable.__init__(self, master)
def get(self): def get(self):
return self._tk.globalgetvar(self._name) return self._tk.globalgetvar(self._name)
class IntVar(Variable): class IntVar(Variable):
_default = "0"
def __init__(self, master=None): def __init__(self, master=None):
Variable.__init__(self, master) Variable.__init__(self, master)
def get(self): def get(self):
return self._tk.getint(self._tk.globalgetvar(self._name)) return self._tk.getint(self._tk.globalgetvar(self._name))
class DoubleVar(Variable): class DoubleVar(Variable):
_default = "0.0"
def __init__(self, master=None): def __init__(self, master=None):
Variable.__init__(self, master) Variable.__init__(self, master)
def get(self): def get(self):
return self._tk.getdouble(self._tk.globalgetvar(self._name)) return self._tk.getdouble(self._tk.globalgetvar(self._name))
class BooleanVar(Variable): class BooleanVar(Variable):
_default = "false"
def __init__(self, master=None): def __init__(self, master=None):
Variable.__init__(self, master) Variable.__init__(self, master)
def get(self): def get(self):
......
...@@ -76,6 +76,7 @@ def _exit(code='0'): ...@@ -76,6 +76,7 @@ def _exit(code='0'):
_varnum = 0 _varnum = 0
class Variable: class Variable:
_default = ""
def __init__(self, master=None): def __init__(self, master=None):
global _default_root global _default_root
global _varnum global _varnum
...@@ -85,6 +86,7 @@ class Variable: ...@@ -85,6 +86,7 @@ class Variable:
self._tk = _default_root.tk self._tk = _default_root.tk
self._name = 'PY_VAR' + `_varnum` self._name = 'PY_VAR' + `_varnum`
_varnum = _varnum + 1 _varnum = _varnum + 1
self.set(self._default)
def __del__(self): def __del__(self):
self._tk.globalunsetvar(self._name) self._tk.globalunsetvar(self._name)
def __str__(self): def __str__(self):
...@@ -93,24 +95,28 @@ class Variable: ...@@ -93,24 +95,28 @@ class Variable:
return self._tk.globalsetvar(self._name, value) return self._tk.globalsetvar(self._name, value)
class StringVar(Variable): class StringVar(Variable):
_default = ""
def __init__(self, master=None): def __init__(self, master=None):
Variable.__init__(self, master) Variable.__init__(self, master)
def get(self): def get(self):
return self._tk.globalgetvar(self._name) return self._tk.globalgetvar(self._name)
class IntVar(Variable): class IntVar(Variable):
_default = "0"
def __init__(self, master=None): def __init__(self, master=None):
Variable.__init__(self, master) Variable.__init__(self, master)
def get(self): def get(self):
return self._tk.getint(self._tk.globalgetvar(self._name)) return self._tk.getint(self._tk.globalgetvar(self._name))
class DoubleVar(Variable): class DoubleVar(Variable):
_default = "0.0"
def __init__(self, master=None): def __init__(self, master=None):
Variable.__init__(self, master) Variable.__init__(self, master)
def get(self): def get(self):
return self._tk.getdouble(self._tk.globalgetvar(self._name)) return self._tk.getdouble(self._tk.globalgetvar(self._name))
class BooleanVar(Variable): class BooleanVar(Variable):
_default = "false"
def __init__(self, master=None): def __init__(self, master=None):
Variable.__init__(self, master) Variable.__init__(self, master)
def get(self): def get(self):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment