2011-06-20 8 views
0

ラジオボタンで再生するためにTkinterをインポートする簡単なプログラムを書きました。私は、非常に奇妙な場所でエラーが発生していることがわかります。PythonのRadioButtonsプログラムのデバッグ

from Tkinter import * 

class Application (Frame): 
    def __init__(self, master): 
     Frame.__init__(self, master) 
     self.grid() 
     self.create_widgets() 

    def create_widgets(self): 


     Label(self, text = "Select the last book you read.").grid (row = 0, column = 0, sticky = W) 

     self.choice = StringVar() 

     Radiobutton (self,text = "Nausea by Jean-Paul Sartre",variable = self.choice, 
       value = "Wake up. This is a dream. This is all only a test of the emergency broadcasting system.", 
       command = self.update_text).grid (row = 2, column = 1, sticky = W) 

     Radiobutton (self, 
       text = "Infinite Jest by David Foster Wallace", 
       variable = self.choice, 
       value = "Because an adult borne without the volition to choose the thoughts that he thinks, is going to get hosed ;)", 
       command = self.update_text).grid (row = 3, column = 1, sticky = W) 

     Radiobutton (self, 
       text = "Cat's Cradle by Kurt Vonnegut", 
       variable = self.choice, 
       value = " \"Here we are, trapped in the amber of the moment. There is no why!\" ", 
       command = self.update_text.grid (row = 4, column = 1, sticky = W) 

     self.txt_display = Text (self, width = 40, height = 5, wrap = WORD) 
     self.txt_display.grid (row = 6, column = 0, sticky = W) 


    #There is only one choice value - self.choice. That can be "printed." 

    def update_text(self): 
     message = self.choice.get() 
     self.txt_display.delete (0.0, END) 
     self.txt_display.insert (0.0, message) 

# The Main 
root = Tk() 
root.title ("The Book Critic One") 
root.geometry ("400x400") 

app = Application (root) 
root.mainloop() 

非常に奇妙な場所でエラーが発生しているようです。 1つはLabelアトリビューションの "="記号で、1つは再生時に==に変更したとき、次はRadioButtonアトリビュートの可変部分に入っています。

ご協力いただければ幸いです。私はちょっと仕事に出なければならないので、すぐに反応することはできませんが、バグがどこにあるのか分かりましたら、教えてください。

答えて

2

ここでは多くのことが行われています。私はすぐにこれを見て見つけた少数を指摘します。あなたのLabelあなたのパラメータの前に=を持つべきではないために

...

Label = (self, text = "Select the last book you read.").grid (row = 0, column = 0, sticky = W) 

へ:そのようRadiobuttonからRadioButtonのすべてのインスタンス

Label(self, text = "Select the last book you read.").grid (row = 0, column = 0, sticky = W) 

変更の実際の名前ですTkinterのクラス。

choice1,choice2およびchoice3は、Applicationには存在しない。

スタッフより:

def create_widgets()selfパラメータ不足している:あなたはself.text_displayを参照しているのでdef create_widgets(self)

あなたupdate_text()機能が働いていないのことですので、私はあなたがこのself.txt_displayになりたいと考えていますそれを以前に定義した方法。

+0

ありがとうございます!私はそれを変更しましたが、私はまだハイライト "自己"で別の邪魔な構文エラーを取得しています。ここでは:http://stackoverflow.com/questions/6427245/debugging-radiobuttons-program-in-python – Louis93

+0

@ Louis93:更新されました。 – Bryan

+0

面倒で申し訳ありません。私はコードを更新し、バグに選択肢の変数を含めて私が知っているすべてのエラーを修正しました。作成ウィジェットのパラメータにselfを追加し、txt_displayの入力ミスを修正しました。構文エラーは同じ場所にポップアップします。「self.txt_display」と「self」が強調表示されます。 – Louis93

関連する問題