2012-03-06 5 views
3

에서 이벤트를 클릭하여 응답 투명한 사각형을 만드는 방법 내가 클릭 이벤트를 응답하는 tkinter.canvas에 사각형을 그릴 필요 :Tkinter를

click_area = self.canvas.create_rectangle(0,0,pa_width,pa_height,fill='LightBlue',outline='lightBlue',tags=['A','CLICK_AREA']) 
self.canvas.tag_bind('CLICK_AREA','<Button>',self.onClickArea) 

그것을 작동합니다.

이 순간에 저는 캔버스에 일련의 그리드를 그려야하고 click_area으로 덮여 있기를 바랍니다. 따라서 click_area을 투명하게 만들어야합니다. 나는 이렇게 썼다

하지만, :

click_area = self.canvas.create_rectangle(0,0,pa_width,pa_height,fill='',outline='lightBlue',tags=['A','CLICK_AREA']) 

는 더 이상 클릭하지 응답을 했다.

내 질문은 투명하게 만들고 클릭에 응답하는 방법입니다. 또는 내가 원하는 것을 구현할 다른 방법이 있습니까?

대단히 감사합니다.

답변

3

나는 그것을 얻은 것 같아요 : 사각형이 아닌 캔버스를 제본하십시오.

해결

self.canvas.bind('<Button>',self.onClickArea) 

문제

self.canvas.tag_bind('CLICK_AREA','<Button>',self.onClickArea) 

를 교체합니다.

0

캔버스 메서드를 사용하여 기존 사각형을 수정하려고했지만 동일한 캔버스로의 바인딩이 작동하지 않아서 동일한 문제가 발생했습니다. 문제는 채우기가없는 Tkinter 직사각형이 경계선의 클릭에만 반응한다는 것입니다.

은 그 때 나는 here에서 create_rectangle에 점각 인수에 대해 읽어 :

점각 : 사각형의 내부는 점묘 수 하는 방법을 나타내는 비트 맵.

기본값은 stipple = ""이며 단색을 의미합니다. 전형적인 값은 stipple = 'gray25'입니다. 채우기 색상이 설정되어 있지 않으면 아무 효과가 없습니다. See Section 5.7, “Bitmaps”.

비트 맵의 ​​섹션에는 기본적으로 몇 가지 옵션 만 사용할 수 있지만 완전히 투명하지는 않습니다. 그러나 은 사용자 정의 비트 맵을 X 비트 맵 이미지 (.xbm 파일)로 지정합니다.

XBM 파일은 C와 유사한 구문을 가진 텍스트 파일 일 뿐이므로 모든 투명한 픽셀로 내 2x2 비트 맵을 만들어 내 Tkinter 스크립트와 동일한 디렉토리에 transparent.xbm으로 저장했습니다.

#define trans_width 2 
#define trans_height 2 
static unsigned char trans_bits[] = { 
    0x00, 0x00 
}; 

당신이 당신의 사각형을 만들 때 @xbm 파일 이름을 앞에 붙여 사용자 정의 점각을 지정할 수 있습니다, 그런 다음 : 다음은 XBM 파일에 대한 코드의

self.canvas.create_rectangle(
    x1, 
    y1, 
    x2, 
    y2, 
    outline='green', 
    fill='gray', # still needed or stipple won't work 
    stipple='@transparent.xbm', 
    width=2 
) 

주, 당신은 여전히 ​​필요 일부 채우기 값을 제공했거나 스 틱플이 적용되지 않습니다. 실제 채우기 값은 채찍질이 캔버스에서 "채우기"때문에 중요하지 않습니다.

관련 문제