1

出力をファイルに書き込むボタンがあります。そして、そのファイル名のファイルが既に存在するかどうかを確認します。ユーザーにオーバーライドするかどうかを尋ねることになっていますか? しかし、それは機能していません。ユーザーが「いいえ」と言った場合でも、プログラムはファイルを上書きします。

これは、MessageBox をポップアップするコードです。

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

2 に答える 2

5

yes/no または ok/cancel ボタンのあるダイアログを使用する必要があり、そのダイアログの戻り値を取得して、ユーザーが何をクリックしたかを知る必要があります。それから、ファイルに書き込むかどうかを決定できます。

例えば:

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には、標準ダイアログに関するちょっとした記事があります

于 2011-07-11T15:25:13.057 に答える
0
if os.path.exists(self.filename.get()) and tkMessageBox.askyesno(title='INFO', message='File already exists, want to override?.'):
    # Overwrite your file here..
于 2011-07-11T15:13:58.120 に答える