1
A
回答
1
以下Python代碼將使按鈕的樣式的副本,請在gtk.STATE_PRELIGHT
(鼠標懸停)狀態的背景顏色相同的顏色爲gtk.STATE_NORMAL
,然後設置樣式後面的小工具。
import gtk
window = gtk.Dialog()
button = gtk.Button('Click Me')
style = button.get_style().copy()
style.bg[gtk.STATE_PRELIGHT] = style.bg[gtk.STATE_NORMAL]
button.set_style(style)
window.vbox.pack_start(button)
window.show_all()
window.run()
因爲這不會影響按鈕的實際狀態,所以對代碼的其餘部分沒有副作用。
此代碼可能對GDK主題有影響。如果我發現這個主題安全的方法,我會編輯我的答案。
2
這可能是你在找什麼。它是C++,但希望你可以把它翻譯成python等價物。該代碼更改了不同狀態下的窗口小部件的背景顏色。
void changeColor(Gtk::Widget* widget, double r, double g, double b) {
Glib::RefPtr<Gdk::Colormap> colormap = widget->get_colormap();
Glib::RefPtr<Gtk::Style> style = widget->get_style()->copy();
// STATE_NORMAL (most of the time)
{
Gdk::Color color;
color.set_rgb_p(r,g,b); // <-- customize this
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_NORMAL, color);
}
// STATE_PRELIGHT (when mouse hovers)
{
Gdk::Color color;
color.set_rgb_p(r*0.9,g*0.9,b*0.9); // <-- customize this
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_PRELIGHT, color);
}
// STATE_ACTIVE (when clicked)
{
Gdk::Color color;
color.set_rgb_p(r*0.8,g*0.8,b*0.8); // <-- customize this
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_ACTIVE, color);
}
widget->set_style(style);
}
你有興趣,使他們比STATE_NORMAL塊相同的STATE_PRELIGHT塊設定正確的顏色。 (我猜這是你的意思,你的問題)。
順便說一下,還有兩個其他狀態不在上述方法中處理:STATE_SELECTED和STATE_INSENSITIVE。還必須說明的是,儘管它的名字是這個函數,但實際上並沒有改變任何小部件的顏色。例如,它不會更改標籤的顏色,因爲標籤採用它的容器顏色。所以不要太認真對待功能簽名。
0
import gtk
def enter(widget, event):
widget.set_state(gtk.STATE_NORMAL)
return False
win = gtk.Dialog()
button = gtk.Button('Button')
button.connect_after('enter-notify-event', enter)
win.vbox.pack_start(button, 0, 0)
win.vbox.show_all()
win.run()
+0
這有效,但如果小部件的狀態對代碼中的其他內容很重要,則可能會導致問題。相反,改變按鈕的樣式可能會更好。 – 2011-03-22 22:45:59
相關問題
- 1. 發光效果對PNG的脈動發光效果
- 2. UISegmentedControl發光效果
- 3. WebGL發光效果
- 4. UITextView中的發光效果
- 5. 禁用iOS中禁用的元素的調光效果
- 6. 的發光效果不起作用
- 7. Flex發光效果定製
- 8. 對MouseEnter發光效果WPF
- 9. DirectX 9 HLSL發光效果
- 10. 發光風格效果
- 11. WPF內部發光效果
- 12. 圍繞NSView發光效果
- 13. 綻放和發光效果
- 14. 邊界外發光效果
- 15. Directx 11 HLSL發光效果
- 16. IPhone文字發光效果
- 17. 按鈕的內部發光效果
- 18. WinRT中TextBlock的外部發光效果
- 19. 發光效果在iPad的矩形
- 20. HTML5畫布上的發光效果?
- 21. WPF中的內部發光效果
- 22. 如何禁用我的主相機上的陽光效果?
- 23. 光澤效果
- 24. 的GtkButton
- 25. iOS/GLES2:如何實現發光效果
- 26. 箱陰影發光效果即
- 27. 向圓圈添加發光效果
- 28. Android - 在畫布上發光效果
- 29. WPF發光效果沒有BitmapEffects
- 30. 刪除滾動發光效果/箭頭
爲了避免gdk主題問題*可能*我找到了一個解決方案:您可以在小部件實現後應用該樣式。使用'widget.connect('實現',函數)',然後添加一個執行樣式複製/編輯/應用方法的函數。 – musicamante 2015-10-13 00:25:59