请原谅我的英语。在
我试图用css文件更改GtkButton的背景色,但我做不到。 我试了几个我在网上找到的例子,但都没用。 我贴了两个例子。一个用python3.2.3编写,另一个用C编写 我用的是Gtk+3.6和Kubuntu 12.10。在
这是其中一个的代码:
from gi.repository import Gtk, Gdk
class MainWindow(Gtk.Window):
def __init__(self):
super().__init__()
vbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.VERTICAL)
self.add(vbox)
self.entries = [ Gtk.Entry() for i in range(3) ]
for e in self.entries:
vbox.pack_start(e, True, True, 0)
e.connect("changed", self.on_entry_changed)
e.set_text('123')
button=Gtk.Button(label='ok')
vbox.pack_end(button,True,True,0)
def on_entry_changed(self,entry):
ctx = entry.get_style_context()
if not entry.get_text().isnumeric():
ctx.add_class('invalid')
else:
ctx.remove_class('invalid')
cssProvider = Gtk.CssProvider()
cssProvider.load_from_path('style.css')
screen = Gdk.Screen.get_default()
styleContext = Gtk.StyleContext()
styleContext.add_provider_for_screen(screen, cssProvider,
Gtk.STYLE_PROVIDER_PRIORITY_USER) # With the others GTK_STYLE_PROVIDER_PRIORITY values get the same result.
window = MainWindow()
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()
以及样式.css在
^{pr2}$参赛作品效果很好。。。背景颜色改变。但是按钮没有,没有错误信息。在
EDIT3:(已删除预览编辑并更改一些标记) 总结…我尝试用我在Web中发现的所有python、c和C++代码来更改按钮颜色。我阅读了我找到的所有教程和GTK+3参考手册。 之后我只知道问题出在Kubuntu主题上:如果我将GTK主题从'oxygen-GTK'更改为“default”(在GTK配置中),这是我发现代码运行良好的唯一方法,但这不是想法,而且按钮看起来很糟糕。在
所以,问题是:
谢谢和问候!在
这应该行得通(我的意思是对我有用!)公司名称:
我知道这很古老,但是在最初的几个google搜索结果中就出现了,所以我想分享一下我的经验。在
在Gtk.按钮具有内联Gtk.标签对于按钮文本,默认情况下不会从按钮继承,因此必须显式地告诉它(或只指定其中的颜色):
至于@sciamp的答案,GTK主题也为背景和边框设置了一个图像,因此您必须手动删除它,并使用
background-image: none; border-image: none;
希望这可以节省某人的麻烦。在这很复杂,但我不认为可以直接做到。在
我相信核心原因是按钮不能渲染背景。它所做的只是围绕其区域渲染帧,然后渲染其中的所有子对象。请记住,GtkButton是一个容器,它通常保存文本标签的GtkLabel,但可以保存任何widgetry。在
我已经设法改变了文本标签的背景颜色,但是只有文本周围的“老虎”框才会受到影响,这不是您想要的。在
间接的解决方案是将GtkButton子类化以创建一个实际呈现其背景的变量。可以肯定的是,这对主题是相当粗鲁的,应该避免。在
相关问题 更多 >
编程相关推荐