При передаче переменных между функциями одного класса в tkinter, это не работает, если я просто передам переменную.Параметр, кажется, работает только в новой функции, если она является переменной экземпляра.
Мой код - это простое окно, которое закрывается при нажатии кнопки, если поле ввода не пустое.
class simpleGUI:
def __init__(self, root):
height = StringVar()
self.root = root
self.frame = ttk.Frame(self.root, padding='30 30 30 30')
self.frame.grid(row=0, column=0, sticky=(N, W, E, S))
self.root.title("Enter your parameters")
ttk.Label(self.frame, text="Height").grid(row=1, column=1, sticky=(W, E))
# widgets
self.height = ttk.Entry(self.frame, width=7, textvariable=height)
self.height.grid(row=2, column=1, sticky=(W, E))
self.height.focus()
self.button = ttk.Button(self.frame, text="OK", command=self.close_window)
self.button.grid(row=3, column=1, sticky=(W, E))
def close_window(self):
if len(self.height.get())>0:
self.root.destroy()
Это работает, только если виджет высоты сохранен в self.height.Если self.height заменяется на height, то это не работает.Например, если нижняя половина кода заменена на следующую:
# widgets
height = ttk.Entry(self.frame, width=7, textvariable=Height)
height.grid(row=2, column=1, sticky=(W, E))
height.focus()
self.button = ttk.Button(self.frame, text="OK", command=self.close_window(height))
self.button.grid(row=3, column=1, sticky=(W, E))
def close_window(self, height):
if len(height.get())>0:
self.root.destroy()
Я не получаю никаких ошибок в консоли. Это просто больше не закрывает окно, и я пытаюсь понять, почему,Консультации от более опытных людей будут оценены.