2012-06-28 24 views
5

Tkinter'daki bir silme düğmesine bir soru sorma iletişim kutusu eklemeye çalışıyorum. Kasten basıldığında bir klasörün içeriğini silen bir düğme var Evet/hayır onay sorusu eklemek istiyorum. Ben "Hayır" tuşuna bile ben bu çalıştırmakTkinter sorgusu iletişim kutusu

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

Everytime "Silinmiş" deyimi olsun. Bir tkMessageBox'a bir if ifadesi eklenebilir mi?

cevap

15

Sorun şu anda if -statement. Sonucu iletişim kutusundan ('yes' veya 'no') almanız ve bununla karşılaştırmanız gerekir. Aşağıdaki kodda 2. ve 3. satırı not edin.

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

Şimdi için kodunuz çalışmaya görünüyor neden olarak: Python türleri çok sayıda boole değerleri beklenen bağlamlarda kullanılabilir. Yani örneğin yapabileceğiniz:

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

aynı şey olmayan herhangi boş dize True gibi davranır ve boş bir dize False gibi davranır dizeleri, için gerçekleşir. Bu nedenle, her zaman if 'yes': yürütülür.

+0

Cevabı gördüğünüzde bu çok açık. 'If == bir şeyler' kombinasyonunu denedim ama girdi olarak tkMessageBox'u kullanmayı düşünmedim, girdiler için sorgunun 'evet'i ve' hayır'ını kullanmaya çalıştım. Yardımınız için teşekkürler. – Jeff

+0

@Jeff: Sorun yok :) – JPvdMerwe

+0

İşlevinizi çalıştırma 'deleteme()' boş bir kutu da oluşturur. Buna neden olabilecek bir fikrin var mı? –