При нажатие на кнопку создается окно. Как сделать что бы кнопку нельзя было нажать еще, пока окно открыто?

Hazaker

Новичок
Пользователь
Сен 24, 2021
14
1
3
В программе есть кнопка при нажатие которой создается новое окно, мне нужно что бы эту кнопку нельзя было нажать пока новое окно открыто.

Пример кода:

Код:
from tkinter import *
import tkinter as tk

osnova = tk.Tk()
osnova.geometry('900x360')
osnova.resizable(False, False)



def clicker_inf():
    clicker_info = tk.Tk()
    clicker_info.geometry('400x300')
    clicker_info.resizable(False, False)
    clicker_info.mainloop()


boton = Button(osnova, command=clicker_inf )
boton.place(x=198,y=68)

osnova.mainloop()
 
  • Мне нравится
Реакции: Student

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
В программе есть кнопка при нажатие которой создается новое окно, мне нужно что бы эту кнопку нельзя было нажать пока новое окно открыто
Это можно сделать так например:
Python:
from tkinter import *
import tkinter as tk

osnova = tk.Tk()
osnova.geometry("900x360")
osnova.resizable(False, False)


def on_closing(window, b):
    """Функция, вызываемая при закрытии окна clicker_info"""

    # включаем кнопку
    b["state"] = "normal"
    # закрываем окно
    window.destroy()


def clicker_inf(b):
    # выключаем кнопку
    b["state"] = "disabled"
    clicker_info = tk.Tk()
    clicker_info.geometry("400x300")
    clicker_info.resizable(False, False)
    # привязываем к событию закрытия окна функцию on_closing
    # которая принимает в качестве аргументов окно и кнопку
    clicker_info.protocol("WM_DELETE_WINDOW",  lambda: on_closing(clicker_info, b))
    clicker_info.mainloop()


# передаем кнопку в функцию открытия нового окна
boton = Button(osnova, text='Button', command=lambda: clicker_inf(boton))
boton.place(x=198, y=68)

osnova.mainloop()
 
  • Мне нравится
Реакции: Student

Форум IT Специалистов