2012-11-11 5 views
1

파이썬의 Tkinter 윈도우 툴킷을 사용하여 솔리테어 클론을 만들고 있습니다. 내 창에는 주 캔버스가 있고 주 캔버스에는 Canvas를 상속 한 일련의 위젯이 들어 있습니다. 사용자가 마우스를 클릭하여 내부 캔버스 중 하나에서 카드를 선택하고 새 캔버스로 드래그 한 다음 수신 캔버스에 카드를 놓을 수있는 "Drag to Move"시스템을 구현했습니다.다른 캔버스 안의 캔버스 위에 그릴 수 있습니까?

문제점 : 나는 사용자가이를 클릭 및 드래그 동작시 화면을 가로 질러 이동 볼 수 있도록, 그들이 그려되는 캔버스 사이의 모션 카드, 그들이 이동하는 캔버스를 그리려는 . 이미 가지고있는 캔버스 사이에 카드를 그릴 때 항상 뒤에서 그려지기 때문에 내부 캔버스 주변의 패딩을 통해서만 카드를 볼 수 있습니다.

여기에 내가 그 중 몇 개를 그린 예가 나와 있습니다. 그래서 효과를 명확하게 볼 수 있으며 내부 캔버스도 명확하게 볼 수 있습니다.

a screenshot of the overlap problem http://i46.tinypic.com/wvcrbt.jpg 내가 무엇을 시도했다

: 내가 다시 Misc.lower (aCanvas)를 사용하여 캔버스를 이동하려고했지만, 내가 원하는 효과를 생성 할 수 없습니다. 나는 또한 오버라이드 된 커스텀 커스텀을 디자인하려고 시도했으나, 커서의 크기가 32px * 32px로 제한되어있어, 이동하려는 카드 이미지의 크기가 충분하지 않은 것으로 보인다.

내 질문 : 다른 캔버스 안에있는 캔버스 위에 어떻게 그릴 수 있습니까? 할 수 없다면 어떻게이 문제를 해결할 수 있을까요?

답변

1

원하는 것을 수행 할 수 없습니다. 삽입 된 위젯은 항상 캔바스 항목 위에 있습니다.

왜 캔버스를 캔버스에 넣을 수 있습니까? 왜 단일 캔버스를 사용하지 않는가?

+0

내 캔버스 안의 캔버스는 사실 addCard(), removeCard(), dragNDropStart() 등의 메소드를 사용하여 Canvas에서 상속 한 특수 컬렉션입니다. 기초, 테이블, 그리기 및 그리기를 처리하고 싶지는 않습니다. 하나의 캔버스 객체에서 모두 더미를 낭비합니다. 이것은 파이썬에서 객체 지향적 인 나의 시도였습니다. – lambdaman

관련 문제