You are currently browsing Lauro Cesar’s articles.

O método Bind() no wxPython permite associar métodos a eventos. Por exemplo:

Bind(wx.EVT_BUTTON, sys.exit(), id=ID_BUTTON)

Ao clicar, o método exit() é disparado.

Para permitir que o método disparado receba argumentos, podemos utilizar:

botao =  wx.Button(self, -1, "Instalar")

Bind(wx.EVT_BUTTON, lambda event: Metodo(event, 'argumento'), botao)

def Metodo(self, argumento):
    print argumento

Para descobrir os atributos de um objeto podemos utilizar:

objeto.__dict__

vars(objeto)

Para descobrir os atributos de uma classe:

vars(Classe())

Se utilizar vars() sem argumentos, funciona como locals(), listando todas as variáveis.

Para listar métodos e atributos de um objeto:

dir(objeto)

Para determinar qual encoding seu script deve rodar, use na primeira linha:

encoding system [tabela]

Exemplo:

encoding system utf-8

Para listar as tabelas disponíveis:

encoding names

Exemplo de listagem:

foreach i [encoding names] {
    puts "A tabela $i está disponível neste sistema"
}

Com o comando:

array set minha_var { chave {valor} chave2 {valor2} }

Criamos uma array com diversas chaves e valores. Exemplo:

array set produtos { }
set produtos(nome) { Banana Caturra }

puts $produtos(nome)

# Retorna: Banana Caturra

Para listar todas as chaves e valores utilizamos o comando:

array names produtos

Exemplo de utilização:

foreach key [array names produtos] {
	puts "Chave: $key"
	puts "Valor: $produtos($key)"
}

Para manipular Strings em Tcl, utilizamos o comando string.

Se precisar substituir ponto por vírgula:

set valor { 10.00 }
puts [string map -nocase { . , }  $valor]

# Retorna: 10,00

Podemos substituir várias cadeias de caracteres:

set texto "Este é um texto de teste de substituição"
puts [string map -nocase { e E s S b B } $texto]

# Retorna: EStE é um tExto dE tEStE dE SuBStituição

Naturalmente, podemos substituir palavras:

set texto "Este é um texto de teste de substituição"
puts [string map -nocase { teste TESTE um {o segundo} } $texto]

# Retorna: Este é o segundo texto de TESTE de substituição

E possível destinar um diretório para nossos códigos auxiliares ou plugins, e na inicialização do sistema importá-los, utilizando o comando source.

Por exemplo, considerando que há vários arquivos .tcl no diretório plugin/

foreach p "[glob plugin/*.tcl]" {
	source $p
}

Palavras-chave: Tcl/Tk, capturar, erros

Quando um procedimento é executando em Tcl, ele retorna 1 (sucesso) ou 0 (falha). É este resultado que faz o interpretador mostrar ou não um erro.

Para não mostrar o erro ao usuário, mas detectá-lo e tratá-lo no código, use o comando catch. Ele chama o interpretador Tcl de forma recursiva, executando o código e retorna 5 possíveis sinais:

  • 0 – TCL_OK
  • 1 – TCL_ERROR
  • 2 – TCL_RETURN
  • 3 – TCL_BREAK
  • 4 – TCL_CONTINUE

Por exemplo, como saber se a conexão ao banco de dados foi bem sucedida?

if { [catch {set token [mysqlconnect \
	-host sqlserver \
	-user user_db \
	-db banco_de_dados \
	-password senha]} err_con] } {
    puts "Erro ao Conectar : $err_con"
}

Se o comando de conectar obteve sucesso, o catch retorna 0 (zero) ou false, fazendo com que o if não execute.

Palavras-chave: Tcl/Tk, pack, grid, place

A sintaxe padrão para a criação de widgets é:

  widget toplevel.my_id opções_do_widget
  pack toplevel.my_id opções_do_pack

Mas também é possível reunir tudo em uma só linha:

  pack [widget toplevel.my_id opções_do_widget] opções_do_pack

Por exemplo:

  label .my_label -text "Oi Mundo!" -bg red -fg yellow
  pack .my_label -expand yes -fill x

Também pode ser escrito como:

  pack [label .my_label -text "Oi Mundo!" -bg red -fg yellow] \
       -expand yes -fill x
Add to Technorati Favorites

Assuntos