Диалоговое окно запроса Tkinter

Я пытался добавить диалоговое окно вопросов к кнопке удаления в 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?

1 ответ

Решение

Проблема ваша 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': всегда выполняется.

Ниже приведен код, чтобы задать вопрос в окне сообщения окна выхода, а затем выйти, если пользователь нажмет Да.

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()
Другие вопросы по тегам