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