Aplique o fundo da barra de ferramentas principal atrás do widget GtkEntry com o GTK3

0

No PyGI (GTK3), como posso fazer um widget GtkEntry aparecer no mesmo plano de fundo aplicado (pelo tema do usuário) à barra de ferramentas principal. Eu tentei adicionar a mesma classe de estilo assim:

entry.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)

mas essa classe não parece ser observada em um widget que não é um GtkToolbar. Então, como eu posso citar o tema do usuário para aplicar os mesmos estilos por trás de um widget GtkEntry?

(Se é importante, eu tenho o GtkEntry na primeira célula de um container GtkHBox. Mas mesmo quando eu aplico um gradiente fixo no HBox, toda a célula que contém o GtkEntry parece mascarar o background do HBox com um flat cor de fundo.)

Obrigado.

    
por monotasker 09.08.2012 / 04:34

2 respostas

2

É chamado de estilo da barra de ferramentas primária porque deve ser aplicado somente à barra de ferramentas principal.

No Gtk, por padrão, as barras de ferramentas podem conter apenas ToolButtons, mas existe a classe ToolItem, que não possui uma representação visual.

Isso é criado porque pode incorporar outros widgets. ToolItem tem um método add que você pode usar como:

my_tool_item.add (my_box) onde my_box contém sua entrada

Depois, você pode adicionar seu item de ferramenta à barra de ferramentas my_toolbar.insert (my_tool_item, index)

Sua barra de ferramentas, é claro, chamou: get_style_context (). add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)

O motivo pelo qual você não pode usar "primary-toolbar" com widgets que não são da Toolbar é mais provável porque em arquivos .css ele é definido como:

GtkToolbar.primary-toolbar 

{

    /* style info*/

}
    
por Aleksandar 10.08.2012 / 22:34
0

Você não disse, por que não pode usar uma barra de ferramentas, por isso vou sugerir exatamente isso:

substitua o HBox por uma barra de ferramentas, dê a essa barra de ferramentas o estilo Gtk.STYLE_CLASS_PRIMARY_TOOLBAR e você deve estar pronto ...

    
por xubuntix 09.08.2012 / 23:20