Tkinter askquestion对话框

时间:2012-06-28 12:34:21

标签: python tkinter tkmessagebox

我一直在尝试向Tkinter中的删除按钮添加一个askquestion对话框。我有一个按钮,一旦按下就会删除文件夹的内容我想添加是/否确认问题。

import Tkinter
import tkMessageBox

top = Tkinter.Tk()
def deleteme():
    tkMessageBox.askquestion("Delete", "Are You Sure?", icon='warning')
    if 'yes':
        print "Deleted"
    else:
        print "I'm Not Deleted Yet"
B1 = Tkinter.Button(top, text = "Delete", command = deleteme)
B1.pack()
top.mainloop()

每次运行此操作时,即使按“否”,我也会收到“已删除”声明。可以将if语句添加到tkMessageBox吗?

2 个答案:

答案 0 :(得分:18)

问题是你的if - 陈述。您需要从对话框('yes''no')获取结果并与之进行比较。请注意下面代码中的第2行和第3行。

def deleteme():
    result = tkMessageBox.askquestion("Delete", "Are You Sure?", icon='warning')
    if result == 'yes':
        print "Deleted"
    else:
        print "I'm Not Deleted Yet"

现在,为什么你的代码似乎有用:在Python中,可以在需要布尔值的上下文中使用大量类型。例如,您可以这样做:

arr = [10, 10]
if arr:
    print "arr is non-empty"
else:
    print "arr is empty"

对于字符串也是如此,其中任何非空字符串的行为类似于True,而空字符串的行为类似于False。因此if 'yes':总是在执行。

答案 1 :(得分:-1)

下面是在退出窗口的消息框中提问的代码,如果用户按“是”,则退出。

byte[] dmx_packet = dmx.render();