2017-07-14 1 views
-1

私は電卓プログラムを作っていますが、現在、ユーザーの入力を文字列に変換しようとしています。私は押されたボタンに基づいてリストを作成することができました。 5を押すと文字列は「5」になり、8を押すと「58」などとなりますので、人がボタンを押すたびにその番号がリストに追加されます最後の例では、リストは['5'、 '8']となります。私はそれを一緒に文字列にしようとしています、 '58'、しかし問題を抱えています。リスト内の文字列が空の文字列に正しく追加されていない

from Tkinter import * 


root=Tk() 
root.geometry('300x500') 
root.configure(bg="gray") 
root.title("Calculator") 

typed_num=[] 

def button_command(number): 
    typed_num.append(str(number)) 

    string_num='' 
    for val in typed_num: 
     string_num+=typed_num 
    print string_num 


startx=20 
starty=60 

one_button=Button(root, text="1", command=lambda:button_command(1), highlightbackground='gray').place(x=startx, y=starty) 
two_button=Button(root, text="2", command=lambda:button_command(2), highlightbackground='gray').place(x=startx+60, y=starty) 
three_button=Button(root, text="3", command=lambda:button_command(3), highlightbackground='gray').place(x=startx+120, y=starty) 
four_button=Button(root, text="4", command=lambda:button_command(4), highlightbackground='gray').place(x=startx, y=starty+60) 
five_button=Button(root, text="5", command=lambda:button_command(5), highlightbackground='gray').place(x=startx+60, y=starty+60) 
six_button=Button(root, text="6", command=lambda:button_command(6), highlightbackground='gray').place(x=startx+120, y=starty+60) 
seven_button=Button(root, text="7", command=lambda:button_command(7), highlightbackground='gray').place(x=startx, y=starty+120) 
eight_button=Button(root, text="8", command=lambda:button_command(8), highlightbackground='gray').place(x=startx+60, y=starty+120) 
nine_button=Button(root, text="9", command=lambda:button_command(9), highlightbackground='gray').place(x=startx+120, y=starty+120) 
zero_button=Button(root, text="0", command=lambda:button_command(0), highlightbackground='gray').place(x=startx+60, y=starty+180) 


root.mainloop() 

ご協力いただきありがとうございます。返されるエラーは次のとおりです。TypeError: 'str'オブジェクトと 'list'オブジェクトを連結できません。

+1

変更 'string_num + = typed_num'に' string_num + = val' – eyllanesc

答えて

1

この連結をここで試行しています:string_num+=typed_num typed_num.append(string_num)などのリストに項目を追加する場合は、appendを使用できます。文字列にリストを追加しようとしましたが、リストに文字列を追加することはできます。 "+"も使用できますが、逆の場合は

1

文字列でリストを追加する必要があるため、その操作はできません。変更する必要があります:

string_num+=typed_num 

string_num+=val 

に文字列のリストを連結するための簡単な方法で参加することで、このことは変わります

string_num='' 
for val in typed_num: 
    string_num+=typed_num 
print string_num 

へ:

print "".join(typed_num) 
関連する問題