Diminuir o rótulo / botão / barra de status com o GTK

1

Qual é a maneira mais fácil de reduzir e eliminar elementos no Python / GTK 3?

Vindo do desenvolvimento web, minha primeira opinião sobre esse problema foi ligar

c = widget.get_style_context() , c.remove_class('visible') , c.add_class('invisible')

mas isso não funcionou (eu tenho que chamar algo como "redesenhar"?)

Também adicionei uma transição para o CSS do GTK.

Obrigado,

Lobo

EDIT: Eu poderia especificar o que eu gostaria de alcançar: Eu tenho este "statusbar", que é apenas um recipiente vertical no meu aplicativo (como na imagem no topo desta página link ).

Se o mouse não estiver se movendo, eu quero apagar todas essas coisas (também para preservar o poder de computação // nenhum recálculo da contagem de palavras e caracteres) e para minimizar a "distração". Eu já encontrei o evento apropriado para ouvir ( motion-notify-event ), então agora só preciso adicionar um fade simples e um tempo limite.

Se alguém puder me indicar uma solução, seja com desordem ou cairo, eu ficaria muito feliz.

    
por wolfv 27.08.2012 / 22:35

1 resposta

0

Bem, o melhor é que funciona com o Ubuntu 12.10 e o GTK 3.6 (é esse número de versão? IDK).

Então, basicamente, o que estou fazendo é definir meu contêiner da barra de status como INSENSITIVE via Gtk.StateFlags.INSENSITIVE).

Esta propriedade é estilizada via CSS. Aqui está minha fonte :

def poll_for_motion(self):
    if (self.was_motion == False
            and self.status_bar_visible 
            and self.buffer_modified_for_status_bar):
        self.status_bar.set_state_flags(Gtk.StateFlags.INSENSITIVE, True)
        self.status_bar_visible = False
        self.buffer_modified_for_status_bar = False
        return False

    self.was_motion = False
    return True

def on_motion_notify(self, widget, data=None):
    self.was_motion = True
    if self.status_bar_visible == False:
        self.status_bar_visible = True
        self.buffer_modified_for_status_bar = False
        self.update_line_and_char_count()
        self.status_bar.set_state_flags(Gtk.StateFlags.NORMAL, True)
        GObject.timeout_add(3000, self.poll_for_motion)

E o CSS que complementa:

#status_bar_box GtkLabel:insensitive {
     color: rgba(255,255,255,0);
     transition: 500ms ease-in-out;
}

#status_bar_box GtkButton:insensitive {
    background: rgba(255,255,255,0);
    transition: 500ms ease-in-out;
}
    
por wolfv 30.09.2012 / 10:35