2016-10-03 56 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() 

当鼠标经过它时,该标签是'active'。所以显示的数字应该在鼠标闪过时从0切换到1。但它不起作用。 有什么帮助吗? Python 3.5.1/Windows Vista

回答

1

我发现文档有点混乱,但它看起来像你想'hover'而不是'active'

我不知道有任何消息来源解释哪些状态标志会自动设置在哪些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我应该写“可靠和完整的来源”。但是使用''hover''而不是''active''工作吗? – Goyo

+0

不,'hoover'似乎不是一个有效的ttk小部件状态_tkinter.TclError:无效的状态名称hoover。有一个解决方法,我的问题使用'label.bind(“”,输入)'和'label.bind(“”,离开)'但我想了解为什么Label(root,image =(img0, 'active',img1))'不能按预期工作。感谢您的关注。 – Jal

相关问题