나는 대부분의 아케이드처럼 사용자가 적을 (명백하게) 죽일 때마다 업데이트되는 화면에 점수 표시가 필요하다는 tkinter gui를 사용하여 아케이드 게임을하고 있습니다.tkinter를 사용하여 파이썬에서 표시/업데이트 점수
저는 캔버스에 텍스트를 만들고 다른 것을 만드는 함수를 호출하지만 이번에는 점수 값 (전역 변수)이 업데이트됩니다.
올바른 방법으로 수행하려면 이전에 작성된 텍스트를 삭제 한 다음 올바르게 표시하려면 새 텍스트를 작성해야합니다 (그렇지 않은 경우). ... 등, 다른, 다른 이상 텍스트 하나의 스택과 같은 코드 그래서 여기
을 것 수 :
from tkinter import *
Root= Tk()
canvas= Canvas(Root,width=500, height=500, bg="white")
canvas.pack()
Score= 0 #This is the global with the score value
J=canvas.create_text(100,100, text=("Score", Score), font=("Comic Sans", 50)) #This is the first appereance of the score on screen, or the first creation.
def change(): #Here's where I change the score value and create the new text
global Score
Score+=1
J=canvas.create_text(100,100, text=("Score", Score), font=("Comic Sans", 50))
def changee(): #And this one, is supossed to work deleting the "J" everytime it is called, but it only works the first time it is called with the first text
canvas.delete(J)
print("del")
def do(): #This one calls the other two in a button (Because I need to call them like this on the actual game code
change()
changee()
B= Button(canvas, text= "change it", command=do)
B.place(x=300,y=300)
그래서 난 그냥 전역 변수로 J
을 넣을 수 알지만, 게임 코드에서 함수가 Toplevel()
을 호출하고 withdraw()
을 호출하는 다른 함수 안에 있기 때문에 그렇게 할 수 없습니다 왜냐하면 내가한다면 캔버스가 아직 만들어지지 않았기 때문입니다. 왜냐하면 캔버스가 아직 만들어지지 않았기 때문입니다.
global J
을 사용하지 않고도 수행하려는 작업을 수행 할 수있는 방법이 있습니까? 또는 그것을하는 다른 쉬운 방법?
감사합니다.
그리고 btw, 내 eng 기술을 변명 ... 나는 그들이 빨아 알아.
PD : 사용 파이썬 당신은이 목적을 위해 Label
를 사용해야합니다
'changee()'와 똑같은 이름을 가진 두 개의 메소드가 있다는 것을 알고 계십니까? – Gogo
어리석은 붙여 넣기, 미안 해요 그리고 그것을 지적 해 주셔서 감사합니다! 지금 텍스트를 편집 할 것입니다. 편집 : 그래서 이제는 맞습니다. 고맙습니다! –
'class' 사용을 고려해야합니다. 'class'를 사용하면 모든 것이 더 쉬울 것입니다. – Lafexlos