2012-06-28 19 views
5

Tkinterの削除ボタンに質問ダイアログボックスを追加しようとしました。私は確かに、はい/いいえ確認の質問を追加したいと思いますが、押したフォルダの内容を削除するボタンがあります。Tkinter askquestionダイアログボックス

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

"No"を押しても「削除済み」文が表示されます。 if文をtkMessageBoxに追加できますか?

答えて

15

問題は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':

+0

答えが分かり次第分かります。私は 'if == something'のさまざまな組み合わせを試みましたが、入力としてtkMessageBoxを使用するとは思わなかったので、入力のために 'yes'と 'no'を使用しようとしました。ご協力いただきありがとうございます。 – Jeff

+0

@Jeff:問題ありません:) – JPvdMerwe

+0

関数 'deleteme()'を実行すると、空のtkinterボックスも作成されます。これを引き起こしているのは何ですか? –

関連する問題