2016-10-03 10 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に切り替わるはずです。しかし、それは動作しません。 ヘルプがありますか? Python 3.5.1/Windows Vista

答えて

1

私はドキュメントがちょっと混乱していますが、'active'の代わりに'hover'が必要なようです。

どの状態がどのウィグデットにどのような状態フラグが自動的に設定されるかを説明している情報源はありません。私がここで行ったことは、マウスカーソルをラベルの上に置き、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

関連する問題