Python TkMessageBox 问题无法使用!

1 投票
2 回答
6214 浏览
提问于 2025-04-16 21:16

我有一个按钮,它的作用是把输出写入一个文件。同时,它会检查这个文件名的文件是否已经存在。程序应该询问用户是否要覆盖这个文件,但现在这个功能不正常。如果用户选择“不”,程序还是会覆盖这个文件。

下面是用来弹出提示框的代码:

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

2 个回答

0

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则满足时,程序才会按照我们的要求去做事情。

比如说,你可以设定一个条件:如果今天是周末,那么就提醒你放松一下,休息一下;如果是工作日,就提醒你要努力工作。这种根据条件来决定程序行为的方式,叫做“条件语句”。

在代码中,条件语句通常是用“如果(if)”这个词来开始的。它后面会跟着一个判断条件,只有当这个条件为真时,后面的代码才会被执行。

简单来说,条件语句就像是给程序设定了一条“路”,只有当你走在这条路上时,程序才会继续前进,执行后面的任务。

if os.path.exists(self.filename.get()) and tkMessageBox.askyesno(title='INFO', message='File already exists, want to override?.'):
    # Overwrite your file here..
5

你需要使用一个对话框,这个对话框里有“是/否”或者“确定/取消”这样的按钮。你需要获取这个对话框的返回值,以便知道用户点击了哪个按钮。根据这个信息,你就可以决定是否要写入文件。

比如说:

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 上有一篇不错的文章,介绍了标准对话框

撰写回答