Adicionar evento conforme a tecla pressionada é uma tarefa bastante procurada. Isso por que muitos utilizam teclas como ENTER para mudar campo, fazer validações, ou até mesmo para formatar os dados. Com essa mesma técnica é possível modificar o que já foi escrito, deixando tudo em maiúsculo ou minusculo por exemplo
Imagem
Exemplo
/** * Seta a codificação do programa */ ini_set("php-gtk.codepage", "UTF-8"); /** * Classe de exemplo * * @name Demo * @author Bruno P. Gonçalves <http: //bruno.pitteli.com.br></http:> * @download <http: //code.google.com/p/fabulafw></http:> */ class Demo { /** * Armazena os widgets necessarios * * @access private * @property array $widgets */ public $widgets = array(); /** * Armazena o estado do window * * @access private * @property integer $state */ private $state; /** * @name __construct() * @return Demo */ public function __construct() { // Cria a janela $this->widgets['frmDemo'] = new GtkWindow(); $this->widgets['frmDemo']->set_size_request(250, 250); $this->widgets['frmDemo']->set_position(Gtk::WIN_POS_CENTER_ALWAYS); $this->widgets['frmDemo']->set_title("Demo"); $this->widgets['frmDemo']->connect("destroy", array($this, "frmDemo_unload")); // Cria o container $fixed = new GtkFixed(); // Cria o GtkEntry $this->widgets['txtDemo'] = new GtkEntry(); $this->widgets['txtDemo']->connect("key-press-event", array($this, "txtDemo_onkeypress")); $fixed->put($this->widgets['txtDemo'], 8, 8); // Inicia a aplicação $this->widgets['frmDemo']->add($fixed); $this->frmDemo_onload(); } /** * Método do carregamento do formulario * * @name frmDemo_onload() */ public function frmDemo_onload() { // Inicia o estado $this->state = 0; // Inicia a aplicação $this->widgets['frmDemo']->show_all(); Gtk::main(); } /** * Método do descarregamento do formulario * * @name frmDemo_unload() */ public function frmDemo_unload() { // Encerra a aplicação Gtk::main_quit(); exit(0); } /** * Método chamado ao apertar uma tecla no GtkEntry * * @name txtDemo_onkeypress * @param GtkEntry $widget GtkEntry do sinal * @param GtkEvent $event Objeto com as informações do evento */ public function txtDemo_onkeypress($widget, $event) { // Verifica se é a tecla ENTER if($event->keyval == Gdk::KEY_Return) { // Fecha a aplicação $this->widgets['frmDemo']->destroy(); } } } /** * Inicia o demo */ new Demo();
Referências
http://gtk.php.net/manual/en/gtk.gtkentry.php
http://gtk.php.net/manual/en/appendix.keysyms.php
http://gtk.php.net/manual/en/gdk.enum.modifiertype.php
http://gtk.php.net/manual/en/gdk.gdkevent.php
http://gtk.php.net/manual/en/gtk.gtkwidget.signal.key-press-event.php
Gostei Bruno