2016-10-03 57 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

相關問題