Форум сайта python.su
0
Имеется форма сделанная в Tkinter.
Как вызвать вызвать из нее по нажатию кнопки модальное окно?
К примеру MessageBox c кнопками Ok Cantel
Офлайн
63
По нажатию какой кнопки? Напиши полностью задачу? Может это быстрые клавиши, или кнопка мыши?? Вопрос поставлен некорректно… Ответ дать не могу…
Офлайн
0
Не принципиально по какому событию. Это может быть нажатие кнопки на форме,
к примеру “About” или нажатие комбинации клавиш. Мне просто нужно по этому
событию вызвать модальное окно с сообщением.
Офлайн
18
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)
Офлайн
0
Это то что нужно. Спасибо.
Офлайн
1
Встала аналогичная задача (открытия модального окна, причем, не из состава стандартных диалоговых окон Ткинтера), решения в лоб не нашел, полез гуглить. Результат решил выложить - вдруг кому понадобится в будущем.
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()

Офлайн
58
wait_window() нужен не для этого
Можете смело убирать…
и focus_set не всегда будет срабатывать. Лучше использовать focus_force()
Это не совсем корректно, так как новое окно фокус все равно теряет 
Отредактировано 4kpt_II (Сен. 10, 2014 22:02:21)
Офлайн