Python TkMessageBox Вопрос не работает! - PullRequest
1 голос
/ 11 июля 2011

У меня есть кнопка, которая записывает вывод в файл. И проверяет, существует ли файл с таким именем файла. Предполагается попросить пользователя переопределить или нет? Но это не работает. Если пользователь говорит «Нет», программа все равно переопределит файл.

Это код для всплывающего окна сообщений:

    if os.path.exists(self.filename.get()):
        tkMessageBox.showinfo('INFO', 'File already exists, want to override?.')

Ответы [ 2 ]

5 голосов
/ 11 июля 2011

Вам необходимо использовать диалоговое окно, содержащее кнопки «да / нет» или «ОК / отмена», и вам необходимо зафиксировать возвращаемое значение этого диалога, чтобы узнать, на что нажал пользователь.Исходя из этого, вы можете решить, записывать ли в файл или нет.

Например:

import Tkinter as tk
import tkMessageBox

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.button = tk.Button(self, text="Push me", command=self.OnButton)
        self.button.pack()

    def OnButton(self):
        result = tkMessageBox.askokcancel(title="File already exists", 
                                       message="File already exists. Overwrite?")
        if result is True:
            print "User clicked Ok"
        else:
            print "User clicked Cancel"

if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()

effbot.org имеет небольшую запись на стандартные диалоги

0 голосов
/ 11 июля 2011
if os.path.exists(self.filename.get()) and tkMessageBox.askyesno(title='INFO', message='File already exists, want to override?.'):
    # Overwrite your file here..
...