#!/usr/bin/python3.5 # -*- coding: utf-8 -*- from tkinter import * from tkinter import messagebox as mb def programm_exit(): print("exit") answer = mb.askyesno(title="Завершение работы программы", message="Выйти из программы?") if answer == True: root.destroy() root = Tk() root.title("Python") root.bind('<Destroy>', programm_exit) root.mainloop() >>> Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib64/python3.5/tkinter/__init__.py", line 1558, in __call__ return self.func(*args) TypeError: programm_exit() takes 0 positional arguments but 1 was given
Меняем
def programm_exit(event):
>>> exit Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib64/python3.5/tkinter/__init__.py", line 1558, in __call__ return self.func(*args) File "/home/user/py/test_window/test2.py", line 10, in programm_exit answer = mb.askyesno(title="Завершение работы программы", message="Выйти из программы?") File "/usr/lib64/python3.5/tkinter/messagebox.py", line 104, in askyesno s = _show(title, message, QUESTION, YESNO, **options) File "/usr/lib64/python3.5/tkinter/messagebox.py", line 72, in _show res = Message(**options).show() File "/usr/lib64/python3.5/tkinter/commondialog.py", line 44, in show w = Frame(self.master) File "/usr/lib64/python3.5/tkinter/__init__.py", line 2592, in __init__ Widget.__init__(self, master, 'frame', cnf, {}, extra) File "/usr/lib64/python3.5/tkinter/__init__.py", line 2147, in __init__ (widgetName, self._w) + extra + self._options(cnf)) _tkinter.TclError: this isn't a Tk applicationunable to create widget ".140512013776544"
Ух ты! А всего то хотелось создать обработчик, при закрытии формы-окна крестиком, который справа в верху.
Окно с вопросом не появилось.
http://python.su/forum/topic/3571/?page=1#post-23046