2012-06-28 30 views
5

He estado tratando de agregar un cuadro de diálogo preguntar a un botón de eliminar en Tkinter. Curently Tengo un botón que elimina el contenido de una carpeta una vez que se presiona Me gustaría agregar una pregunta de confirmación sí/no.Tkinter askquestion cuadro de diálogo

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() 

Cada vez que ejecuto esto recibo la declaración "Eliminado" incluso si presiono "No". ¿Se puede agregar una sentencia if a un tkMessageBox?

Respuesta

15

El problema es su if -statement. Debe obtener el resultado del cuadro de diálogo (que será 'yes' o 'no') y compare con eso. Tenga en cuenta la segunda y tercera línea en el siguiente código.

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

Ahora, para que justifique el código parece funcionar: En Python un gran número de tipos puede utilizarse en contextos donde se esperan valores booleanos. Así, por ejemplo, que puede hacer:

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

Lo mismo ocurre para las cadenas, donde cualquier cadena no vacía se comporta como True y una cadena vacía se comporta como False. Por lo tanto if 'yes': siempre ejecutándose.

+0

Está tan claro cuando ves la respuesta. Probé varias combinaciones de 'si == algo', pero no pensé utilizar el tkMessageBox como entrada, me quedé colgado al intentar usar el 'sí' y el 'no' de askquestion para las entradas. Gracias por tu ayuda. – Jeff

+0

@Jeff: No hay problema :) – JPvdMerwe

+0

Ejecutando su función 'deleteme()' también crea un cuadro de tkinter en blanco. ¿Alguna idea de lo que podría estar causando esto? –

Cuestiones relacionadas