В Python, как ограничить открытие окна или нажатие кнопки с помощью tkinter - PullRequest
0 голосов
/ 28 апреля 2020

Я делал проект с Tkinter и столкнулся с проблемой. Вот код:

from tkinter import *
Root = Tk()
def Open():
    Root1 = Toplevel()

MyButton = Button(Root, text="Open A New Window!", command=Open).pack()
mainloop()

Проблема с этим кодом в том, что он откроется 10 windows, если я нажму sh кнопку 10 раз. Я попытался это решить:

from tkinter import *
Root= Tk()

def Open():
    Root1 = Toplevel()
    MyButton = Button(Root, text="Open A New Window!", command = Open, state=DISABLED).grid(row=0, column=0)

MyButton = Button(Root, text="Open A New Window!", command = Open).grid(row= 0, column=0)

mainloop()

Но это также не работает, потому что после закрытия нового окна я не могу открыть его снова после этого, потому что кнопка останется отключенной.

1 Ответ

0 голосов
/ 28 апреля 2020

Это ниже должно работать. Не лучшее решение, но оно позволит вам снова включить кнопку при закрытии второго окна.

from tkinter import *
Root= Tk()

def Open():
    Root1 = Toplevel()
    Root1.protocol("WM_DELETE_WINDOW", lambda x=Root1: on_closing(x))
    MyButton['state'] = DISABLED

def on_closing(window):
    MyButton['state'] = ACTIVE
    window.destroy()

MyButton = Button(Root, text="Open A New Window!", command = Open)
MyButton.grid(row= 0, column=0)

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