Форум сайта python.su
Имеется форма сделанная в Tkinter.
Как вызвать вызвать из нее по нажатию кнопки модальное окно?
К примеру MessageBox c кнопками Ok Cantel
Офлайн
По нажатию какой кнопки? Напиши полностью задачу? Может это быстрые клавиши, или кнопка мыши?? Вопрос поставлен некорректно… Ответ дать не могу…
Офлайн
Не принципиально по какому событию. Это может быть нажатие кнопки на форме,
к примеру “About” или нажатие комбинации клавиш. Мне просто нужно по этому
событию вызвать модальное окно с сообщением.
Офлайн
import Tkinter import tkMessageBox def buttonCallback(): result= tkMessageBox.askokcancel('title', 'message') label['text'] = str(result) root = Tkinter.Tk() button = Tkinter.Button(root, text = "button", command = buttonCallback ) label = Tkinter.Label(root, text = "None") button.pack() label.pack() root.mainloop()
Отредактировано sp3 (Окт. 25, 2012 16:08:57)
Офлайн
Это то что нужно. Спасибо.
Офлайн
Встала аналогичная задача (открытия модального окна, причем, не из состава стандартных диалоговых окон Ткинтера), решения в лоб не нашел, полез гуглить. Результат решил выложить - вдруг кому понадобится в будущем.
from Tkinter import Tk, Toplevel, Button def openModal(): slave = Toplevel(root) slave.grab_set() slave.focus_set() slave.wait_window() root = Tk() Button(root, text = 'openModal', command = openModal).pack() root.mainloop()
Офлайн
wait_window() нужен не для этого Можете смело убирать…
и focus_set не всегда будет срабатывать. Лучше использовать focus_force()
Это не совсем корректно, так как новое окно фокус все равно теряет
Отредактировано 4kpt_II (Сен. 10, 2014 22:02:21)
Офлайн