2017-12-03 15 views
0

これは私のGUIプログラムの一部で、私は問題があり、誰かが私を助けてくれることを願っています。私は何をしようとしていることは、あなたがチェックボタンをクリックしたとき、それはテキストウィジェット上の価格が表示されているはずですが、私はそれは私にエラーを与えてチェックボタンをクリックすると、次のとおりです。Python - Tkinter CheckButton問題

File "E:\Phython\Theater.py", line 147, in update_text if self.matinee_price.get(): AttributeError: 'Checkbutton' object has no attribute 'get'

def matinee_pricing(self): 
    #Purchase Label 
    self.theater_label = tkinter.Label(text='Purchase Theater Seats Here', font=('Verdana', 15, 'bold')) 
    self.theater_label.grid(row=2, column=10) 
    #Checkbutton 
    self.matinee_price = BooleanVar() 
    self.matinee_price = tkinter.Checkbutton(text = '101 \nthru \n105', font=('Verdana', 10), bg='light pink', height=5, width=10,\ 
              variable = self.matinee_price, command = self.update_text) 
    self.matinee_price.grid(row=5, column=9) 

    self.result = tkinter.Text(width=10, height=1, wrap = WORD) 
    self.result.grid(row=20, column=10) 

def update_text(self): 
    price = '' 

    if self.matinee_price.get(): 
     price += '$50' 

    self.result.delete(0.0, END) 
    self.result.insert(0.0, price) 
+0

本当にtkinterを2回インポートしないでください。悪い習慣です。詳細については、[this](https://stackoverflow.com/questions/47479965/is-there-a-point-to-import-two-different-ways-in-a-program)を参照してください。 – Nae

答えて

0

ます」 boolean変数をチェックボックス自体で上書きします。 BoolenaVarの宣言には別の名前が必要で、他の関数はその名前を確認する必要があります。

また、チェックボックスはデフォルトで0と1を使用して状態を表します。ブール値を使用する場合は、onvalueoffvalueを適宜変更する必要があります。

def matinee_pricing(self): 
    # [...] 
    self.matinee_price_var = BooleanVar() # Different name for the variable. 
    self.matinee_price = tkinter.Checkbutton(text = '101 \nthru \n105', font=('Verdana', 10), bg='light pink', height=5, width=10,\ 
              variable = self.matinee_price_var, onvalue=True, offvalue=False, command = self.update_text) 
    # Add onvalue, offvalue to explicitly set boolean states. 
    # [...] 

def update_text(self): 
    price = '' 

    # Use the variable, not the checkbox 
    if self.matinee_price_var.get(): 
     price += '$50' 
    #[...] 

P.S .:ブラケットの内側に改行する必要はありません。 Pythonは、角カッコ内のすべてが前のコマンドの一部であるとみなします。この場合はチェックボックスです。構文エラーが発生していないことを確認し、個々の引数を行間で分割しないでください。

+1

'variable = self.matinee_price'を' variable = self.matinee_price_var'に変更する必要はありませんか? – Nae

+0

もちろん、私はそれを変更するのを忘れました。修正していただきありがとうございます。 – ikom

+0

ありがとう!!今はうまく動作します。私はPythonには新しく、このクラスはインターネット/ YouTubeが私の唯一のソースなので、私が取っているこのクラスは講義よりも多くのワークショップです。 – IceBuko

関連する問題