Как закрыть более одного окна одним кликом? - PullRequest
2 голосов
/ 07 апреля 2019

Я хочу закрыть два окна одновременно, когда пользователь нажимает кнопку «Пуск», появляется новое окно, и когда пользователь нажимает кнопку «Выход» во втором всплывающем окне, чем оба окна должны закрываться при время.

Я знаю, что для другого окна мне нужно создать отдельную функцию для выхода из окон, но я хочу закрыть более одного окна одним щелчком мыши.

Я использую Python 3.7!

import tkinter

def NewWindow():

    def qExit():
        root.destroy()

    root = tkinter.Tk()
    root.title("New Window")
    newButton = tkinter.Button(root, text=" Click here  to Exit:",
                                command=qExit)
    newButton.pack()
    root.geometry("300x200")
    root.mainloop()


Window = tkinter.Tk()
Window.title("hello")
eButton = tkinter.Button(Window, text="Start", command=NewWindow)
eButton.pack()
Window.geometry("200x200")
Window.mainloop()

Ответы [ 3 ]

1 голос
/ 07 апреля 2019

Вы не должны вызывать tkinter.Tk() более одного раза в tkinter приложении.Позвоните Toplevel(), если вы хотите создать новое окно.

Как правило, вам также не нужно звонить mainloop() более одного раза.

Чтобы закрыть обаВ новом окне и главном окне вы можете передать последнее первому при его создании, а затем destroy() в вашей функции qExit() (а также в самом новом окне).

ПримечаниеЯ изменил некоторые имена функций и переменных, чтобы они больше соответствовали PEP 8 - Руководство по стилю для кода Python .

import tkinter

def makeWindow(parent):

    def qExit():
        newWindow.destroy()
        parent.destroy()

    newWindow = tkinter.Toplevel()
    newWindow.geometry("300x200")
    newWindow.title("New Window")
    newButton = tkinter.Button(newWindow, text=" Click here  to Exit",
                               command=qExit)
    newButton.pack()


root = tkinter.Tk()
root.title("hello")
eButton = tkinter.Button(root, text="Start", command=lambda: makeWindow(root))
eButton.pack()
root.geometry("200x200")
root.mainloop()
0 голосов
/ 07 апреля 2019

Не нужно описание

def qExit():
    root.destroy()
    Window.destroy()
0 голосов
/ 07 апреля 2019

Простым решением было бы просто выполнить exit (), чтобы остановить программу, которая закроет все окна.в качестве альтернативы вы можете составить список всех объектов открытого окна и вызвать для них уничтожение.

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