Форум сайта python.su
Интенесует вопрос как сделать так чтобы нельзя было закрыть 1 окно пока открыто 2
Сам код :
Отредактировано Romeruk (Май 25, 2015 21:10:39)
Офлайн
Тут есть несколько вариантов.
1. Можно явно передать label для вставки в них значений.
2. Внутри window можно получить root и найти на нем нужные Вам label.
3. Переписать все в ООП (пока рановато, но вариант должен был назвать).
4. Сделать root глобальной переменной (настоятельно не рекомендую).
Выбирайте любой понравившийся…
P.S. По коду достаточно много ошибок. Перечислю основные из них:
1. Никогда не делайте from tkinter import*
2. Создавать отдельную функцию только для закрытия окна не есть хорошо.
3. Названия виджетов старайтесь сделать информативнее.
4. Нельзя одновременно использовать разные менеджеры геометрии объектов (разделять их можно применяя frame).
5. Ну и про if __name__ == “__main__” все же нужно прочитать.
6. PEP8 куда уж без него
P.S.S. Вопросы по Tkinter желательно задавать в разделе GUI.
Отредактировано 4kpt_III (Май 19, 2015 14:16:12)
Офлайн
4kpt_IIIСпасибо
Тут есть несколько вариантов.1. Можно явно передать label для вставки в них значений.2. Внутри window можно получить root и найти на нем нужные Вам label.3. Переписать все в ООП (пока рановато, но вариант должен был назвать).4. Сделать root глобальной переменной (настоятельно не рекомендую).Выбирайте любой понравившийся…P.S. По коду достаточно много ошибок. Перечислю основные из них:1. Никогда не делайте from tkinter import*2. Создавать отдельную функцию для закрытия окна не есть хорошо.3. Названия виджетов старайтесь сделать информативнее.4. Нельзя одновременно использовать разные менеджеры геометрии объектов (разделять их можно применяя frame).5. Ну и про if __name__ == “__main__” все же нужно прочитать.P.S.S. Вопросы по Tkinter желательно задавать в разделе GUI.
Отредактировано Romeruk (Май 19, 2015 14:18:08)
Офлайн
Тут тоже есть несколько вариантов.
1. Самый простой. Смотрите в сторону .protocol(“WM_DELETE_WINDOW”, callback_function)
2. Метод trancient(parent).
Опять же. Выбирайте любой
Офлайн
4kpt_IIIХорошо спасибо
Тут тоже есть несколько вариантов.1. Самый простой. Смотрите в сторону .protocol(“WM_DELETE_WINDOW”, callback_function)2. Метод trancient(parent).Опять же. Выбирайте любой
Офлайн
теперь когда ввести допустим 1111 , а потом 1 не получается вот такое
Отредактировано Romeruk (Май 25, 2015 21:11:31)
Офлайн
Т.е. вы внутри вызова toplevel задаете два label для корневого окна?
Офлайн
4kpt_IIIПолучается что да
Т.е. вы внутри вызова toplevel задаете два label для корневого окна?
Отредактировано Romeruk (Май 25, 2015 21:12:37)
Офлайн
Это неправильно. И кони и люди. Все смешано. Лучше явно передать через lambda, т.е.
button.bind('<Button-1>', lambda event: window(event, label1, label2))
def window(event, label1, label2): # create toplevel and all widgets label1["text"] = float(input.get())
Офлайн