Как уничтожить окно tkinter в python? - PullRequest
0 голосов
/ 24 апреля 2020
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

Есть ли какое-либо решение, которое позволило бы кнопке вызвать функцию, которая изменит значения переменных, а затем закроет это окно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...