10

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

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 吗?

4

2 回答 2

25

问题是你的if-statement。您需要从对话框中获取结果(将是'yes'or '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':总是执行。

于 2012-06-28T12:37:55.827 回答
-1

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

from tkinter import  *
from tkinter import messagebox
root=Tk()
def clicked():
  label1=Label(root,text="This is text")
  label1.pack()
def popup():
  response=messagebox.askquestion("Title of message box ","Exit Programe ?", 
  icon='warning')
  print(response)
   if   response == "yes":
      b2=Button(root,text="click here to exit",command=root.quit)
      b2.pack()
  else:
    b2=Button(root,text="Thank you for selecting no for exit .")
    b2.pack()
button=Button(root,text="Button click",command=clicked)
button2=Button(root,text="Exit Programe ?",command=popup)
button.pack()
button2.pack()
root.mainloop()
于 2020-01-20T20:53:52.340 回答