Ir para conteúdo

Calculadora Wxlua


Posts Recomendados

Opa galerinha, refiz a calculadora agora, só pra ver o quanto eu melhorei.

 

Ai vai o código:

 

require("wx")

MeuPalco = wx.wxFrame(wx.NULL, wx.wxID_ANY, "Calculadora WxLua", wx.wxDefaultPosition, wx.wxSize(200,250), wx.wxDEFAULT_FRAME_STYLE + wx.wxRESIZE_BOX + wx.wxRESIZE_BORDER + wx.wxMAXIMIZE_BOX)
ButtonWx_table = {}
OperationsWx = {"=", "+", "*", "/", "-", "^", "%", "."}
Operation_log = false
Number_log = 0
PositionWx = -1

for ID, Operation in ipairs(OperationsWx) do
PositionWx = ID % 5 == 1 and PositionWx +1 or PositionWx
table.insert(ButtonWx_table, wx.wxButton(MeuPalco, ID, Operation, wx.wxPoint((ID - PositionWx*5 -1)*30+15, 120 +PositionWx*30), wx.wxSize(30, 30)))
end

for i = 0, 9 do
local n = i >= 5 and i - 5 or i
table.insert(ButtonWx_table, wx.wxButton(MeuPalco, i+100, tostring(i), wx.wxPoint(n*30+15, i > 4 and 90 or 60), wx.wxSize(30, 30)))
end


TextWx1 = wx.wxTextCtrl(MeuPalco, wx.wxID_ANY, "", wx.wxPoint(15, 10), wx.wxSize(120, 30), wx.wxTE_READONLY)
ButtonWx1 = wx.wxButton(MeuPalco, wx.wxID_ANY, "C", wx.wxPoint(140, 10), wx.wxSize(30, 30), wx.wxTE_READONLY)
ButtonWx1:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_BUTTON_CLICKED, function() TextWx1:Clear() Number_log = 0 Operation_log = false end)
MeuPalco:Connect(wx.wxID_ANY, wx.wxEVT_MAXIMIZE, function() MeuPalco:SetSize(200, 250) end)


for _, Button in pairs(ButtonWx_table) do
if Button:GetId() >= 100 then
	Button:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_BUTTON_CLICKED, function() TextWx1:WriteText(tostring(Button:GetId()-100)) end)
else
	Button:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_BUTTON_CLICKED, function() Operate(OperationsWx[button:GetId()]) end)
end
end

function Operate(signal)

if signal == "." then
       if TextWx1:GetValue() ~= "" and not string.find(TextWx1:GetValue(), "%.") then
	TextWx1:WriteText(signal)
end
return true
elseif not Operation_log then
if TextWx1:GetValue() ~= "" then
	if #TextWx1:GetValue() > 1 or string.sub(TextWx1:GetValue(), 1, 1) ~= "-" then
		if signal ~= "=" then
			Operation_log = signal
			Number_log = TextWx1:GetValue()
			TextWx1:Clear("")
		end
	end
else
	if signal == "-" then
		TextWx1:WriteText("-")
	end
end
return true
elseif signal ~= "=" then
return true
end

loadstring("i = " .. Number_log .. Operation_log .. TextWx1:GetValue())()

TextWx1:Clear()
TextWx1:WriteText(tostring(i))
Operation_log = false

return true
end

MeuPalco:Show(true)
wx.wxGetApp():MainLoop()

 

Download

 

Scan

 

Imagem

 

 

dpxnr8.png

 

 

 

 

É isso ai, valeu.

Editado por Demonbholder
Atualização
Link para o comentário
Compartilhar em outros sites

boa, interessante

 

eu n conhecia wxlua antes de vc vir me perguntar sobre..

 

n deve ser muito usado no mercado, vc poderia começar aprender C++, C#, .NET, java, python, alguma linguagem com mais mercado (sugestão) ;p

 

mas uma coisa eu digo e acho muito bacana

SEMPRE, SEMPRE que eu falo que comecei programar com LUA, nego olha como um diferencial.

 

pq?

pq lua geralmente é usado por jogos tal, e jogos é uma área que exige uma puta lógica e raciocinio :)

Link para o comentário
Compartilhar em outros sites

  • 4 months later...

Vendo esse codigo lembrei de eu me ferrando em JAVA via notepad ++

 

Não conhecia esse interpretador, interessante para treinar programacao.

Acho interessante que lua pra mim é quase perfeita tem a multi plataforma do JAVA, simplicidade de um Delphi e Basic e muito poderosa além de leve

Além de ser Brasileira

 

LUA por enquanto além de jogos está usando usada muito em hardware

 

E realmente da um diferencial para um trabalho

 

 

Deveria ser fixado esse topico.

Fico feliz de fuçar no forum e achar coisas além de tutoriais falhos de codigos simples

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 6 months later...

Tópico e código refeitos.

 

Nova versão :D

 

Obs: Agora é possível adicionar as operações que vc quiser na tabela OperationsWx. Se você quer, por exemplo, que multiplique o primeiro número por 4 e depois divida pelo segundo número, vc adicionaria isso:

 

"*4/"

 

Abç.

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

×
×
  • Criar Novo...