2014-07-14 1 views
0

나는 Tkinter와 Python을 사용하여 간단한 프로그램을 만들려고 노력해 왔습니다. 클릭 버튼 만 누르면 클릭 한 버튼에 따라 특정 라벨이 업데이트됩니다. 나는이 프로그램을 실행하려고 할 때마다, 난 그냥 오류 얻을 지금간단한 Tkinter 프로그램에 대한 오류 얻기

from tkinter import * 

apples = 0 
gold = 0 

def pick(): 
    global apples 
    apples = apples + 1 


def sell(): 
    global apples 
    global gold 
    gold = gold + (apples * 10) 
    apples = 0 

app = Tk() 

app.title("Apple Picking Simulator 2014") 
app.geometry("400x300+100+60") 

label1 = Label(text = "Welcome to Apple Picking Simulator 2014!").pack() 
Label().pack() 
label2 = Label(text = "Apples: " + apples).pack() 
label3 = Label(text = "Gold: " + gold).pack() 
button1 = Button(text = "Pick Apple", command = pick).pack() 
button2 = Button(text = "Sell Apples", command = sell).pack() 

app.mainloop() 

: 이것은 내 코드입니다,

TypeError: Can't convert 'int' object to str implicitly 

나는 그것이 문자열로 정수를 변환 할 수 없습니다 이해를하지만, 나는 모든 것을 시도해 왔고, 나는 그것이 효과가있는 것처럼 보이지 않습니다. 창에 사과와 금 번호를 표시하고 선택 버튼을 클릭 할 때마다 업데이트되도록하는 쉬운 방법이 있습니까? 감사.

답변

0

정수를 문자열에 연결하려고하면 오류가 발생합니다. 및 gold 정수 변수를 str function을 사용하여 문자열에 명시 적으로 캐스팅해야합니다.

교체 :

label2 = Label(text = "Apples: " + apples).pack() 
label3 = Label(text = "Gold: " + gold).pack() 

으로 :

label2 = Label(text = "Apples: " + str(apples)).pack() 
label3 = Label(text = "Gold: " + str(gold)).pack() 

고정 소스 코드 :

from tkinter import * 

apples = 0 
gold = 0 

def pick(): 
    global apples 
    apples = apples + 1 


def sell(): 
    global apples 
    global gold 
    gold = gold + (apples * 10) 
    apples = 0 

app = Tk() 

app.title("Apple Picking Simulator 2014") 
app.geometry("400x300+100+60") 

label1 = Label(text = "Welcome to Apple Picking Simulator 2014!").pack() 
Label().pack() 
label2 = Label(text = "Apples: " + str(apples)).pack() 
label3 = Label(text = "Gold: " + str(gold)).pack() 
button1 = Button(text = "Pick Apple", command = pick).pack() 
button2 = Button(text = "Sell Apples", command = sell).pack() 

app.mainloop() 
+0

덕분에 모두가. 이것은 오류를 없앴습니다. 나는 전에 이것을 한 줄 알았다. 그러나 여전히 문제가 있습니다. 버튼을 클릭 할 때마다 새로운 양의 사과 또는 금으로 레이블이 업데이트되지 않습니다. 이런 일이 일어날 수있는 방법은 없나요? 아니면 작동하지 않을 수 있습니까? – Hero2016

+0

@ Hero2016 어떻게 도와 줄지 모르겠지만,'pick' 콜백과'sell' 콜백에서 라벨을 변경하는 코드를 추가해야 할 것입니다. 이것에 대해 새로운 질문을 게시 할 수 있습니다. –

0

귀하의 문제는 당신이 문자열과 정수를 연결하는 시도하고 있다는 것입니다 :

label2 = Label(text = "Apples: " + apples).pack() 
label3 = Label(text = "Gold: " + gold).pack() 

이 오류가 발생합니다 :

여기
>>> apples = 0 
>>> "Apples: ", apples 
('Apples: ', 0) 
>>> "Apples: " + apples 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: cannot concatenate 'str' and 'int' objects 
>>> 

수정 된 코드입니다 : 귀하의 답변

from tkinter import * 

apples = 0 
gold = 0 

def pick(): 
    global apples 
    apples = apples + 1 


def sell(): 
    global apples 
    global gold 
    gold = gold + (apples * 10) 
    apples = 0 

app = Tk() 

app.title("Apple Picking Simulator 2014") 
app.geometry("400x300+100+60") 

label1 = Label(text = "Welcome to Apple Picking Simulator 2014!").pack() 
Label().pack() 
label2 = Label(text = "Apples: " + str(apples)).pack() 
label3 = Label(text = "Gold: " + str(gold)).pack() 
button1 = Button(text = "Pick Apple", command = pick).pack() 
button2 = Button(text = "Sell Apples", command = sell).pack() 

app.mainloop() 
관련 문제