2017-02-21 8 views
-1

Я знаю, что этот вопрос задают много, но я не могу заставить мой код работать.python TKinter 'int'/'str' объект не имеет атрибута 'append'

Как проектируется, я пытаюсь построить простой калькулятор. Но я застрял. Вот мой код.

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

настоящее время я получаю ВНУТР объект не имеет атрибута «» добавляемого

это означает, что вы не можете использовать команду на добавление с номерами?

если да, то как это можно сделать, если я нажму одну из кнопок, она добавит это число на счетчик, так что если вы нажмете кнопку один, два, пять, вы получите 0125, я тоже пробовал это делать с

counter = "" 

, но это просто дает ту же ошибку, но с «ул» объект не имеет атрибута «добавить»

я новичок в Python и любая помощь будет принята с благодарностью.

+0

Функция 'append' предназначена для списков. try 'counter + = x' – bunji

+0

Mb попробуйте использовать' counter = 0 counter + = str (x) 'вместо .append. Он должен работать, потому что мы предопределяем его тип и объединяем строки, а не целые числа. – Grynets

ответ

1

Это означает, что вы не можете использовать команду append с числами?

Да, это именно то, что он означает.

, если так, как это было бы возможно сделать так, если я нажать одну из кнопок добавляет, что число в счетчике, так что если вы нажмете кнопку один, два, пять, вы получите 0125

Вы решаете это, делая counter строку. Оставьте его как строку до момента, когда вам понадобится целое число, после чего вы сможете выполнить преобразование.

Хотя, строки не имеют метода append. Для добавления к строке вы можете использовать +=, как в:

counter += x 

Хотя, что требует, чтобы x быть строкой, тоже. Простым решением является передача строки, а не числа:

one = tk.Button (..., command = lambda: helloCallBack("1")) 
two = tk.Button (..., command = lambda: helloCallBack("2")) 
... 
+0

Спасибо этой работе отлично. Мне также нужно было изменить переменную счетчика на глобальную, а также вывести ее из функции, а другой - сохранить ее только на число, нажатое спасибо. –