2012-06-28 11 views
5

मैं टिंकर में एक डिलीट बटन पर एक पूछताछ संवाद बॉक्स जोड़ने की कोशिश कर रहा हूं। निश्चित रूप से मेरे पास एक बटन है जो एक बार दबाए जाने के बाद फ़ोल्डर की सामग्री को हटा देता है, मैं एक हां/कोई पुष्टिकरण प्रश्न जोड़ना चाहता हूं।टिंकर पूछताछ संवाद बॉक्स

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 में जोड़ा जा सकता है?

उत्तर

15

समस्या आपकी if -स्टेटमेंट है। आपको संवाद से परिणाम प्राप्त करने की आवश्यकता है (जो 'yes' या 'no' होगा) और इसकी तुलना करें। नीचे दिए गए कोड में दूसरी और तीसरी पंक्ति पर ध्यान दें।

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

अब के लिए क्यों अपने कोड काम करने के लिए लगता है के रूप में: अजगर में प्रकार की एक बड़ी संख्या संदर्भों जहां बूलियन मूल्यों उम्मीद कर रहे हैं में इस्तेमाल किया जा सकता है। तो उदाहरण के लिए आप कर सकते हैं:

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

एक ही बात तार, जहां किसी भी गैर खाली स्ट्रिंग True तरह बर्ताव करता है और एक खाली स्ट्रिंग False की तरह बर्ताव के लिए होता है। इसलिए if 'yes': हमेशा निष्पादित।

+0

जब आप उत्तर देखते हैं तो यह स्पष्ट होता है। मैंने 'if == कुछ' के विभिन्न संयोजनों की कोशिश की थी लेकिन इनपुट के रूप में tkMessageBox का उपयोग करने के बारे में नहीं सोचा था, मैं इनपुट के लिए पूछताछ के 'हां' और 'नहीं' का उपयोग करने की कोशिश करने पर लटका हुआ था। आपकी सहायता के लिए धन्यवाद। – Jeff

+0

@ जेफ: कोई समस्या नहीं :) – JPvdMerwe

+0

आपके फ़ंक्शन को चलाने 'deleteme()' एक खाली टिंकर बॉक्स भी बनाता है। कोई विचार यह क्या हो सकता है? –