2012-10-20 4 views
4

나는 캔버스에 그려진 사각형에 3 개의 원으로 구성된 미국의 신호등을 시뮬레이션하려고합니다. 시뮬레이션은 2 초마다 표시되는 빛을 녹색> 노란색> 빨간색> 녹색 등의 순서로 변경하여 "애니메이션"을 반영합니다.생성 후 Python Canvas 객체의 속성을 변경할 수 있습니까?

내가 할 수있는 유일한 방법은 canvas.move(), canvas.after(), canvas.update() 패턴을 사용하여 채워진 타원형 객체를 이동하여 한 번에 하나의 채워지지 않은 원을 겹치게하는 것입니다. . 적절한 속도와 올바른 순서로 원을 움직이기 위해 로직을 다운 시켰습니다. 문제는 "녹색"으로 채워진 원을 인스턴스화하는 것이지만이 방법을 사용하여 "황색"또는 "빨간색"으로 변경할 수는 없습니다. canvas.delete ("filled")를 가지고 2 초마다 다른 채우기로 다시 그려야하는 것은 어리석은 일입니다. 왜냐하면 그렇게 간단한 프로그램에서해야 할 일이 많기 때문입니다.

질문 1 : 내 채워진 캔버스 개체에 대해 fill 옵션을 일부 방법이나 다른 방법으로 변경할 수 있습니까?

질문 2 :이 시나리오에 잘못 접근하고 있습니까? 이것을 시뮬레이션하는 더 좋은 방법이 있습니까?

답변

14

예 캔버스의 설정을 config으로 변경해야합니다.

마찬가지로, itemconfig을 사용하여 캔버스의 항목을 변경하십시오. 이렇게하려면 항목에 핸들을 저장하거나 태그를 지정해야합니다. tkinterbook에서

예 :

i = w.create_line(xy, fill="red") 

w.coords(i, new_xy) # change coordinates 
w.itemconfig(i, fill="blue") # change color 
+0

감사합니다! 내가 정확히 그것을 어떻게 불러야합니까? 어떤 대상을 내가 부르는거야? 내가 가진 것은 캔버스'self.canvas'와 객체''filled "'에 대한 태그입니다. 충분한 정보인가? 'self.canvas [ "filled"]'시도했지만 작동하지 않는 것 같습니다. 저는 루비 (Ruby) 녀석입니다. 그래서 파이썬에서 속성에 접근하는 것은 저에게 새로운 것입니다. –

+0

고마워요! 그게 완벽 했어! –

관련 문제