2016-10-03 6 views
1

ttk 레이블을 사용하면 레이블의 상태에 따라 표시되는 여러 이미지를 지정할 수 있습니다. 그러나 나는 그것을 작동하게 만들 수 없다. 여기에 코드가 있습니다.ttk 레이블 위젯의 다중 이미지

from tkinter import * 
from tkinter.ttk import * 

BITMAP0 = """ 
#define zero_width 24 
#define zero_height 32 
static char zero_bits[] = { 
0x00,0x00,0x00, 0x00,0x00,0x00, 0xf0,0x3c,0x0f, 0xf0,0x3c,0x0f, 
0xf0,0x3c,0x0f, 0xf0,0x3c,0x0f, 0x00,0x00,0x00, 0x00,0x00,0x00, 
0xf0,0x00,0x0f, 0xf0,0x00,0x0f, 0xf0,0x00,0x0f, 0xf0,0x00,0x0f, 
0x00,0x00,0x00, 0x00,0x00,0x00, 0xf0,0x00,0x0f, 0xf0,0x00,0x0f, 
0xf0,0x00,0x0f, 0xf0,0x00,0x0f, 0x00,0x00,0x00, 0x00,0x00,0x00, 
0xf0,0x00,0x0f, 0xf0,0x00,0x0f, 0xf0,0x00,0x0f, 0xf0,0x00,0x0f, 
0x00,0x00,0x00, 0x00,0x00,0x00, 0xf0,0x3c,0x0f, 0xf0,0x3c,0x0f, 
0xf0,0x3c,0x0f, 0xf0,0x3c,0x0f, 0x00,0x00,0x00, 0x00,0x00,0x00 
}; 
""" 

BITMAP1 = """ 
#define one_width 24 
#define one_height 32 
static char one_bits[] = { 
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x0f, 0x00,0x00,0x0f, 
0x00,0x00,0x0f, 0x00,0x00,0x0f, 0x00,0x00,0x00, 0x00,0x00,0x00, 
0x00,0x00,0x0f, 0x00,0x00,0x0f, 0x00,0x00,0x0f, 0x00,0x00,0x0f, 
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x0f, 0x00,0x00,0x0f, 
0x00,0x00,0x0f, 0x00,0x00,0x0f, 0x00,0x00,0x00, 0x00,0x00,0x00, 
0x00,0x00,0x0f, 0x00,0x00,0x0f, 0x00,0x00,0x0f, 0x00,0x00,0x0f, 
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x0f, 0x00,0x00,0x0f, 
0x00,0x00,0x0f, 0x00,0x00,0x0f, 0x00,0x00,0x00, 0x00,0x00,0x00 
}; 
""" 

root = Tk() 
img0 = BitmapImage(data=BITMAP0, foreground='lime', background='black') 
img1 = BitmapImage(data=BITMAP1, foreground='lime', background='black') 
label = Label(root, image=(img0, 'active', img1)) 
label.pack() 

레이블이 마우스를 지나갈 때 레이블이 '활성'입니다. 따라서 마우스를 움직이면 표시된 숫자는 0에서 1로 전환됩니다. 그러나 그것은 효과가 없습니다. 도움이 되었습니까? 파이썬 3.5.1/윈도우 비스타

답변

1

나는 약간 혼란 스럽지만, 'active' 대신에 'hover'을 원하는 것처럼 보입니다.

어떤 조건의 wigdets에 어떤 상태 플래그가 자동으로 설정되는지 설명하는 소스는 알지 못합니다. 여기에서 마우스 커서를 레이블 위에 놓은 다음 label.state()을 호출하여 상태를 쿼리합니다.

+0

ttk 위젯의 상태 목록은 다음과 같습니다. http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-map.html 및 ttk.Label 위젯의 이미지 옵션에 대한 문서는 다음과 같습니다. 여기 : http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Label.html – Jal

+0

@Jal "신뢰할 수 있고 완전한 출처"를 써야합니다. 하지만''능동태 ''대신 '호버'를 사용 했나요? – Goyo

+0

아니요,'hoover'가 유효한 ttk 위젯 상태가 아닙니다. _tkinter.TclError : 틀린 상태 이름 hoover. 'label.bind ("", 입력)'및'label.bind ("", leave)'를 사용하여 문제를 해결할 수있는 방법이 있습니다. 그러나'Label (root, image = (img0, 'active', img1))'예상대로 작동하지 않습니다. 관심을 가져 주셔서 감사합니다. – Jal