Объявите и инициализируйте install_svc
на корневом уровне (глобальная область). Оператор global install_svc
сам по себе не будет автоматически создавать переменную в глобальной области видимости: он просто выполнит поиск глобальной переменной с таким именем, но, если вы попытаетесь использовать эту переменную без предварительного присвоения ей чего-либо, NameError
будет брошено.
код
install_svc = None # Or some other initial value
class MyGUI(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.switch_frame(StartPage)
self.geometry("400x300")
def switch_frame(self, frame_class):
"""Destroys current frame and replaces it with a new one."""
new_frame = frame_class(self)
if self._frame is not None:
self._frame.destroy()
self._frame = new_frame
self._frame.pack()
def quit_app(self):
self._frame.destroy()
self.destroy()
class StartPage(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
global install_svc
# You can use install_svc safely
print(install_svc)
class PageOne(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
def entry_check(self,parent):
global install_svc
# You can use install_svc safely
print(install_svc)
Вы также можете проверить, существует ли переменная, сделав try..except
, но это будет действительно ужасно (по крайней мере, для меня), и вам нужно будет делать такую проверку везде:
class MyGUI(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.switch_frame(StartPage)
self.geometry("400x300")
def switch_frame(self, frame_class):
"""Destroys current frame and replaces it with a new one."""
new_frame = frame_class(self)
if self._frame is not None:
self._frame.destroy()
self._frame = new_frame
self._frame.pack()
def quit_app(self):
self._frame.destroy()
self.destroy()
class StartPage(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
global install_svc
try:
install_svc
except NameError:
install_svc = None # Or some initial value
class PageOne(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
def entry_check(self,parent):
global install_svc
try:
install_svc
except NameError:
install_svc = None # Or some initial value