![](http://s019.radikal.ru/i639/1303/20/62905bfba113.png)
![](http://s004.radikal.ru/i208/1304/27/508995dfa3e2.png)
import Tkinter import tkMessageBox root = Tkinter.Tk() root.withdraw() mes = tkMessageBox.askyesno(message = "first question") print mes root.destroy() root = Tkinter.Tk() root.withdraw() mes2 = tkMessageBox.askyesno(message = "second question") print mes2 root.destroy() root.mainloop()
4kptДело в следующем. У меня есть следующий код.
Ну так удаляйте их. Кто за Вас это будет делать?
def ok_cancel(message): root=Tk() # Иначе будет показываться лишнее пустое окно root.withdraw() if messagebox.askokcancel('Подтвердите:',message): return True else: return False root.mainloop() root.destroy() # Вернуть отредактированный текст def text_field_edit(title,array): root, res = Tk(), [None] def callback(): res[0] = txt.get(1.0,END); root.destroy() root.title(title) scrollbar = Scrollbar(root,jump=0) txt = Text(root,font="14",wrap=WORD,yscrollcommand=scrollbar.set) txt.insert(END,array) # Позволяет использовать мышь для управления скроллбаром scrollbar.config(command=txt.yview) scrollbar.pack(side=RIGHT,fill=Y) txt.pack() # Выход по клику кнопки ok = Button(root, text='Запомнить и выйти',command=callback) ok.pack() # Выход по нажатию Enter и Пробел на кнопке (навигация по Shift+Tab) ok.bind('<Return>', lambda e:callback()) txt.focus_set() root.mainloop() if str(res[0])=='None' or str(res[0])==default_line_break: my_error(empty_field_error_msg) return res[0]
root.mainloop()
4kptПоказывает окно?
Ответьте на один вопрос.Зачем нужна эта строчка?
root.mainloop() root.destroy()
4kptПоменял. Осталось как раньше - окна messagebox нормально убиваются, а после text_field_edit остается пустое root-окно, хотя если использовать только text_field_edit, все завершается нормально. Куда в этой функции (text_field_edit) я могу поместить mainloop? Если до кнопок - кнопки не отображаются, если последней строкой - скрипт не сможет вернуть тот текст, который пользователь вводит в окно. Вырубаю в терминале
Неверно…Разберитесь…По Вашему коду. Поменяйте местами эти две строки:
File "/usr/local/bin/main.py", line 785, in text_field_edit
root.mainloop()
File "/usr/lib/python3.1/tkinter/__init__.py", line 1012, in mainloop
self.tk.mainloop(n)
KeyboardInterrupt
# -*- coding: UTF-8 -*- from Tkinter import * import tkMessageBox as messagebox from tkFont import Font root = Tk() root.withdraw() yesno = messagebox.askokcancel("OMG", "Не нажмайте ОК!") my_frame = Frame(root) my_frame.pack() my_label = Label(my_frame, text="Мы используем все то же главное окно!") my_label.pack() root.update_idletasks() root.deiconify() yesno = messagebox.askokcancel("OMG", "Удалить окно?") root.withdraw() my_frame.forget() yesno = messagebox.askokcancel("OMG", "Новое окно?") my_label.configure(text="Все тоже главное окно, тот же фрейм, та же надпись.") my_frame.pack() root.update_idletasks() root.deiconify() yesno = messagebox.askokcancel("OMG", "Может всетаки новое окно?") my_frame.destroy() my_frame = Frame(root) my_frame.pack() font = Font(family="Helvetica", size=16) text = Text(my_frame, font=font) text.pack() text.insert(END, "Все новое - хорошо забытое старое.\n") text.insert(END, "В нашем случае, это не пустые слова.") Button(my_frame, text="Выход", command=root.destroy).pack() root.mainloop()