A partir dessa lição, voltaremos a fazer exercícios com pacotes. Você pode criar um novo pacote para cada exercício ou apenas modificar o primeiro exercício que fizemos.
Um objeto Button pode ser criado com, por exemplo:
self.bt = gtk.Button("MANDAR")
Para adicionar esse objeto à tela do XO, numa dada posição, usamos normalmente um objeto Fixed (visto em aula anterior):
Os métodos de Button são:
show()
hide()
destroy()
set_label(label)
Para trocar o título
get_label()
Retorna o título
Mas um botão serve para disparar alguma ação. Como isso é feito?
Colocamos a ação numa função que pode se chamar, por exemplo: mostra. E existe um método que, a partir de algo que se fez com o botão, dispara essa função. Esse "algo que se fez" é chamado de "signal". Os signals válidos são:
E o método é:
connect("signal", self.função, None)
Meio confuso? Vendo parte do código do exercício fica mais fácil de entender. Queremos que, quando um botão for clicado, apareça um texto.
Claro que esse código tem que vir dentro de uma Classe etc. etc. como já mostramos.
#...
def __init__(self):
Activity.__init__(self)
#Definindo o tamanho das letras
gtk.settings_get_default().props.gtk_xft_dpi *= 4
#Criando base para layout
self.fix = gtk.Fixed()
self.add(self.fix)
self.fix.show()
#Criando Label vazio
self.lb = gtk.Label()
self.fix.put(self.lb, 200,400)
self.lb.show()
#Criando Button
self.bt = gtk.Button("MOSTRAR")
self.fix.put(self.bt, 200,200)
self.bt.show()
#Definindo o signal e respectiva função
self.bt.connect("clicked",self.mostra, None)
def mostra(self,widget,data=None):
self.lb.set_text("APARECI!")
Erros comuns são não colocar a mesma indentação para as funções e esquecer do self no nome da função a disparar.
Repare que para fechar uma atividade vamos ao ícone na barra superior e num MouseOver aparece o nome da atividade. Mas esse nome tem que ser definido dentro da função construtora com, por exemplo:
self.set_title("CLIQUE DE BOTÃO")
Como não fizemos, aparece o default.
LIÇÂO ANTERIOR PRÓXIMA LIÇÂO ÍNDICE HOMEPAGE