from tkinter import *
from tkinter.ttk import *
def quit(self):
self.root.destroy()
def myGrid(value):
# global SIZE_X, SIZE_Y
# SIZE_X, SIZE_Y = (value, value)
# root.destroy() #1
# quit(self) #2 #3
def main():
canvas = Canvas(root, height=1, width=260,)
# Execute Button, This has to be above the canvas pack to get it at the Top of the Window
# Choosing the size of the grid for main program
btn1 = Button(root, text="Easy !", style="TButton", command=myGrid(10))
btn1.pack()
btn2 = Button(root, text="Medium !", style="TButton", command=myGrid(20))
btn2.pack()
btn3 = Button(root, text="Hard !", style="TButton", command=root.destroy)
btn3.pack()
У меня есть фрагмент кода выше в моей программе, и я пытаюсь закрыть это начальное окно. Изначально все кнопки были установлены как btn3
, и окно закрывается, как и ожидалось, и открывается главное окно. Я оставил btn3 так, чтобы он позволял мне закрывать этот раздел кода во время тестирования, пока я тестировал оставшуюся часть кода.
Три кнопки предназначены для настройки двух значений переменных, которые используются в главном программа. Просто сейчас я не заинтересован в том, чтобы переменная менялась и использовалась основной программой. Это то, с чем я буду работать, как только преодолею эту начальную проблему.
Я настроил вызов функции для изменения переменных myGrid
, выделил изменения переменных и использовал функцию, чтобы закрыть окно, но Я изо всех сил пытаюсь сделать это. В рамках тестирования я даже разделил функцию destroy на отдельную функцию quit
, чтобы убедиться в отсутствии проблем с функцией изменения переменной, включая метод destroy. Я прошел через различные другие вопросы и обнаружил, что уже пробовал эти решения.
#1 With root.destroy in the myGrid function I get an error
_tkinter.TclError: NULL main window
#2 and #3 using quit, quit() or quit(self) has given reactions of nothing through to errors
TypeError: quit() missing 1 required positional argument: 'self'
NameError: name 'self' is not defined
Есть ли какое-либо решение, которое позволило бы кнопке вызвать функцию, которая изменит значения переменных, а затем закроет это окно?