2017-02-21 24 views
-1

この質問はたくさん聞かれていますが、私のコードは動作するようです。python TKinter 'int'/'str'オブジェクトに 'append'属性がありません

私は単純な電卓を作ろうとしています。しかし、私はこだわっています。ここに私のコードです。私は現在、「int型のオブジェクトを取得しています

import Tkinter as tk 
import tkMessageBox 

top = tk.Tk() 

def helloCallBack(x): 
    counter = 0  
    counter.append(x) 
    tkMessageBox.showinfo("result", counter) 

one = tk.Button (top, text = "1", command = lambda: helloCallBack(1)) 
two = tk.Button (top, text = "2", command = lambda: helloCallBack(2)) 
three = tk.Button (top, text = "3", command = lambda: helloCallBack(3)) 
four = tk.Button (top, text = "4", command = lambda: helloCallBack(4)) 
five = tk.Button (top, text = "5", command = lambda: helloCallBack(5)) 
six = tk.Button (top, text = "6", command = lambda: helloCallBack(6)) 
seven = tk.Button (top, text = "7", command = lambda: helloCallBack(7)) 
eight = tk.Button (top, text = "8", command = lambda: helloCallBack(8)) 
nine = tk.Button (top, text = "9", command = lambda: helloCallBack(9)) 
zero = tk.Button (top, text = "9", command = lambda: helloCallBack(0)) 

one.pack() 
two.pack() 
three.pack() 
four.pack() 
five.pack() 
six.pack() 
seven.pack() 
eight.pack() 
nine.pack() 
zero.pack() 

top.mainloop() 

には属性が

「を追加しない」している、これはあなたが数字でappendコマンドを使用できないことを意味するのでしょうか?

もしそうなら、私はボタンの1つを押すとそれをカウンタに追加するので、ボタン1、2、5を押すと0125が得られます。これもやってみました

counter = "" 

が、それだけで同じエラーを与えるとが、「strが」オブジェクトが属性を持っていないと「を追加し」私は、Pythonに新たなんだと任意の助けいただければ幸いです。

+0

'append'関数はリスト用です。 'counter + = x'を試してください – bunji

+0

Mbは.appendの代わりに' counter = 0 counter + = str(x) 'を使ってみてください。それは型であり、整数ではなく文字列を連結するので、うまくいくはずです。 – Grynets

答えて

1

これは、数字でappendコマンドを使用できないことを意味しますか?

はい、まさにその意味です。

私はいずれかのボタンを押すと、それはカウンターにその番号を追加しますので、あなたはボタン1、2、5を押した場合は、0125

になるだろうので、どのようにそれを作ることが可能になりそうだとすれば

counterを文字列にすることでこれを解決できます。整数にする必要がある瞬間までそれを文字列のままにしておけば、その時点で変換を行うことができます。

文字列にはappendメソッドもありません。あなたが+=を使用することができ、文字列に追加するには、のように:

counter += x 

けれども、それはxがあまりにも、文字列である必要があります。その単純な解決策は、数値ではなく文字列を渡すことです:

+0

ありがとうございました。また、カウンタ変数をグローバル変数に変更して関数から外す必要がありました。 –

関連する問題