처음으로 파이썬에서 tkinter를 사용하여 GUI를 만들었습니다. wxPython을 사용해 보았지만 같은 문제는 없었지만 캔버스는 사용하지 않았습니다. 캔버스 뒤의 사고 과정은 결국 애니메이션을 추가하는 것입니다. 나는 하나의 그리드가 캔버스 인 그리드 레이아웃을 만들었다. itemconfig를 사용하여 점수 필드를 업데이트하려고 시도 중입니다. 행운을 빌어 두 점수 필드를 캔버스에서 업데이트하려고합니다. 내 코드는 아래와 같습니다. 캔버스에서 두 점수를 업데이트하는 방법에 대한 권장 사항은 무엇입니까? 새 점수가 화면에 표시되기 전에 이전 점수를 삭제하겠습니다. 봐 주셔서 감사합니다. 지구상을 용서하십시오, 이것은 진행됨에 따라 제거되어야합니다.tkinter 캔버스에서 텍스트 필드 업데이트
class Gui(Frame):
def __init__(self, root):
self.root=root
self.initUI()
def initUI(self):
global score1, score2 # these are ints
score1str = str(score1)
score2str = str(score2)
root.title("Table Tennis Scoreboard")
self.canvas = Canvas(root, width=640, height=480, background='green')
self.canvas.grid(row=0,column=1)
self.canvas.create_text(185, 90, anchor=W, font=('Calibri', 20),
text="Let's play Table Tennis!")
self.canvas.create_rectangle(75, 120, 275, 320, outline="red", fill="red")
self.canvas.create_rectangle(370, 120, 565, 320, outline="blue", fill="blue")
self.canvas.create_text(125, 130, anchor=W, font=('Calibri', 20),
text="Player 1")
self.canvas.create_text(425, 130, anchor=W, font=('Calibri', 20),
text="Player 2")
self.score1_id = self.canvas.create_text(135, 250, anchor=W, font=('Arial', 100),
text=score1str)
self.score2_id = self.canvas.create_text(435, 250, anchor=W, font=('Arial', 100),
text=score2str)
frame = Frame(self.root, relief=RAISED, borderwidth=2, background='white')
frame.grid(row=0,column=0)
p1up = Button(frame,text="Player1 +1", height=2, width=10, background='red', command=self.add('one'))
p1up.grid(row = 0,column = 0, padx=10, pady=(20,5))
p1down = Button(frame,text="Player1 -1", height=2, width=10, background='red', command=self.subtract('one'))
p1down.grid(row = 1,column = 0, padx=10, pady=(5,100))
p2up = Button(frame,text="Player2 +1", height=2, width=10, background='blue', command=self.add('two'))
p2up.grid(row = 3,column = 0, padx=10, pady=5)
p2down = Button(frame,text="Player2 -1", height=2, width=10, background='blue', command=self.subtract('two'))
p2down.grid(row = 4,column = 0, padx=10, pady=(5,100))
reset = Button(frame,text="Reset", height=2, width=10, command=self.new_game())
reset.grid(row = 6,column = 0, padx=10, pady=(5,20))
def new_game(self):
global score1, score2 # these are ints
score1 = 0
score2 = 0
self.update_score()
def add(self, player):
global score1, score2 # these are ints
self.player = player
if self.player == 'one':
#if score1 < 11:
score1 += 1
elif self.player == 'two':
#if score2 < 11:
score2 += 1
self.update_score()
return
def subtract(self, player):
global score1, score2 # these are ints
self.player = player
if self.player == 'one':
if score1 > 0:
score1 = score1 - 1
elif self.player == 'two':
if score2 > 0:
score2 -= 1
self.update_score()
return
def update_score(self):
global score1, score2 # these are ints
score1str = str(score1)
score2str = str(score2)
self.canvas.itemconfig(self.score1_id, text=score1str)
self.canvas.itemconfig(self.score2_id, text=score2str)
return
if __name__== '__main__':
root=Tk()
gui=Gui(root)
root.mainloop()
"행운"은 무엇을 의미하지 않는다? 오류가 있습니까? 프로그램이 충돌합니까? 잘못된 단어가 나타 납니까? –
캔버스 항목, 즉 텍스트를 삭제 한 다음 새 텍스트로 create_text 문을 수행합니다. http://effbot.org/tkinterbook/canvas.htm의 삭제 예제를보십시오 –
점수가 업데이트되지 않는다는 점에서 운이 좋지는 않습니다. 초보자 라 할지라도 프로그램이로드되고 인터페이스가 멋지게 보입니다. 내가 원하는 것은 버튼을 눌렀을 때 점수가 업데이트된다는 것입니다. 캔버스에서 필드를 삭제하고 다시 만들려고했으나 아무런 결과가 나타나지 않고 아무 버튼을 눌러도 첫 번째로로드 된 후 점수가 변경되지 않습니다. – Sherd