Ir para conteúdo

Biblioteca Wxlua


joaohd

Posts Recomendados

Introdução à biblioteca wxlua



Antes de iniciarmos nosso aprendizado em wxlua, devemos ter em mente qual a finalidade dessa biblioteca.

Bem, a biblioteca wxlua, juntamente com sua API C, implementa as funções essenciais para criarmos uma

aplicação com interface gráfica.

 

É uma biblioteca muito rica e, utilizando-se de outras bibliotecas lua, podemos criar aplicativos incríveis.

 

Entendida a função, podemos começar a estudar a estrutura dos programas escritos com a biblioteca wxlua,

que segue uma estrutura bem rígida quanto à organização.

 

Para que possamos utilizar as funções disponíveis através da biblioteca wx, nosso programa deverá invocar

esta, através da função require, da seguinte maneira:

 

require("wx")

 

Desta maneira, nosso programa terá conhecimento das funções e poderá utilizá-la.

Obrigatoriamente, nosso aplicativo deve ter um frame, que seria como um "palco", onde nossos componentes

serão inseridos. Este palco deve também ser repassado a uma variável, para que possa ser acessado quando

formos "pendurar" nossos componentes. - "pendurar" seria a tradução de "append", termo que passaremos a utilizar mais adiante.

Agora veremos nossa primeira função wx, a função wx.wxFrame:

 

 MeuPalco = wx.wxFrame(wx.NULL, wx.wxID_ANY, "Tutorial xtibia", wx.wxDefaultPosition, wx.wxSize(200,200), wx.wxDEFAULT_FRAME_STYLE)

 

Onde :

O primeiro argumento é o id do frame "pai". Quando quisermos criar um frame principal, deveremos utilizar no lugar desta variável,

a constante wx.NULL

 

O segundo argumento é o id do frame que está sendo criado. Comumente utiliza-se o wx.wxID_ANY, que irá criar um

id para nosso frame.

 

O terceiro argumento é o nome que será exibido no topo do nosso palco.

 

O quarto argumento é a posição onde o palco será criado. Para tamanho padrão, utiliza-se a constante wx.wxDefaultPosition.

 

O quinto argumento é o tamanho do palco

 

O último argumento é o estilo do palco. Para criarmos um frame com estilo padrão, utilizamos a constante wx.wxDEFAULT_FRAME_STYLE.

 

Então já sabemos criar um palco para que possamos colocar nossos componentes. Vamos criar um menu?

 

Para criarmos um menu, devemos associá-lo também a uma variável, com o valor da função wx.wxMenu(). Veja:

 

 MeuMenu = wx.wxMenu()

 

Vamos agora colocar uma opção neste menu. Esta opção nos mostrará uma mensagem informando que você conseguiu criar a opção.

Criarei primeiro um id para associar à minha opção e em seguida, a criarei:

 

 MenuXtibia = 1
MeuMenu:Append(MenuXtibia, "&xtibia", "Clique para saber mais.") 

 

Os parâmetros do Append, são:

Id, que é o id associado ao seu menu

Texto, que é o texto que ficará escrito em sua opção no menu

Mensagem, que é a mensagem que aparecerá no rodapé do nosso programa quando posicionarmos o

cursor do mouse sobre a opção

 

Você deve ter percebido que eu coloquei um "&" no meu texto. Bem, este é o modo de criar um atalho. Neste

caso, meu atalho será "x". Quando eu estiver no menu e pressionar "x", esta opção será selecionada.

 

Continuando, nós já criamos nosso menu. Entretanto, ele não está no palco ainda. Ou seja, não será exibido. Vamos colocá-lo lá?

Primeiro criamos a barra de menus:

 

 MinhaBarra = wx.wxMenuBar() 

 

Depois, "penduro" meu menu na barra que criei:

 

 MinhaBarra:Append(MeuMenu, "&Menu") 

 

Por fim, coloco minha barra no meu palco:

 

 MeuPalco:SetMenuBar(MinhaBarra) 

 

Menu no lugar, que tal criarmos a barra inferior que exiba alguma mensagem para o usuário?

 

 MeuPalco:CreateStatusBar(1) 

 

Pronto. Vou colocar um texto nela que, quando o programa for aberto, estará escrito:

 

 MeuPalco:SetStatusText("Olá! Você está indo bem!") 

 

Feito. Lembra que eu disse que a nossa opção no menu exibiria uma mensagem? Então, agora é a hora:

 

 MeuPalco:Connect(MenuXtibia, wx.wxEVT_COMMAND_MENU_SELECTED,
function(event)
	wx.wxMessageBox("Boa campeão. Você está seguindo corretamente o tutorial.",
			"Parabéns!",
			wx.wxOK + wx.wxICON_INFORMATION,
			MeuPalco)
end) 

 

Ufa, está acabando. Tudo o que criamos até agora, não está visível. Então, devemos corrigir isto:

 

 MeuPalco:Show(true)

 

E por fim, para que nosso programa seja exibido corretamente, utilizamos a função MainLoop:

 

 wx.wxGetApp():MainLoop() 

 

Pronto. Se conseguiu obter resultados positivos, parabéns. Caso contrário, procure entender

onde estão seus erros e procure corrigí-los.

 

Nosso código no fim deve estar parecido com este:

 

require("wx")

MeuPalco = wx.wxFrame(wx.NULL, wx.wxID_ANY, "Tutorial xtibia", wx.wxDefaultPosition, wx.wxSize(200,200), wx.wxDEFAULT_FRAME_STYLE)
MeuMenu = wx.wxMenu()

MenuXtibia = 1

MeuMenu:Append(MenuXtibia, "&xtibia", "Clique para saber mais.")
MinhaBarra = wx.wxMenuBar()
MinhaBarra:Append(MeuMenu, "&Menu")
MeuPalco:SetMenuBar(MinhaBarra)
MeuPalco:CreateStatusBar(1)
MeuPalco:SetStatusText("Olá! Você está indo bem!")

MeuPalco:Connect(MenuXtibia, wx.wxEVT_COMMAND_MENU_SELECTED,
function(event)
	wx.wxMessageBox("Boa campeão. Você está seguindo corretamente o tutorial.",
			"Parabéns!",
			wx.wxOK + wx.wxICON_INFORMATION,
			MeuPalco)
end) 
MeuPalco:Show(true)
wx.wxGetApp():MainLoop()

 

 

Lembrando: Para se executar este código, é necessária a biblioteca wxlua ou o scite instalados.

flw

Editado por apocarai
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...