Python TkMessageBox 问题无法使用!
我有一个按钮,它的作用是把输出写入一个文件。同时,它会检查这个文件名的文件是否已经存在。程序应该询问用户是否要覆盖这个文件,但现在这个功能不正常。如果用户选择“不”,程序还是会覆盖这个文件。
下面是用来弹出提示框的代码:
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 上有一篇不错的文章,介绍了标准对话框。