Mostrando postagens com marcador interface grafica. Mostrar todas as postagens
Mostrando postagens com marcador interface grafica. Mostrar todas as postagens

sexta-feira, 2 de janeiro de 2015

Interface - parte III

Imagine que você tenha de fazer um programa que converta a temperatura de Celsius para Fahrenheit, a primeira coisa que pensamos é que o usuário deverá introduzir um valor e o programa converte e apresenta o resultado.

Com uma pesquisa básica você descobre a fórmula para essa conversão.

C/5= (F -32)/9

Basicamente é simples. E o código usando uma função seria assim:

def mudanca(x):
    F = x*9/5 + 32
    print "o valor em Fahrenheit e " + str(F)


O usuário chamará a função com o valor correto e terá o resultado


Essa é a janela normal de execução em Python. E temos o resultado.
Mas, imagine que você queira fazer uma interface gráfica =].
Utilizando o Tkinter isso é simples. a diferença agora é que temos de receber o resultado de uma caixa de texto e converte-lo ao clicar em um botão.



Essa é a ideia. O que será acrescentado nessa código é a caixa de texto e o evento que irá armazenar o valor da mesma ao clique do botão.

from Tkinter import *
#funcao que converte a temperatura
def mudanca():
    temp = temperatura.get()
    #convertendo
    F = temp*9/5 + 32
    #colocando o resultado em uma Label
    mTemperatura.configure(text="A temperatura em Fahreight e : " + str(F))


mJanela = Tk()
#valor que será armazenado da caixa de texto
temperatura = IntVar()
mJanela.geometry("250x200")
mJanela.title("Temperatura")
mlabel = Label(text = 'Digite a temperatura em Celcius:').pack()
#caixa de texto
mTexto_entry = Entry(mJanela,textvariable = temperatura).pack()
#Botao
mButao =  Button(text = "Calcular", command = mudanca).pack()
#label sem texto
mTemperatura = Label(text = "")
mTemperatura.pack()
mJanela.mainloop()

Simples até. A caixa de texto recebe o valor pelo usuário e o armazena ao clicar no botão na variável temperatura. A função mudanca() é chamada e faz todo o processo.

O interessante do código é o fato de atualizar o valor da Label.


 mTemperatura.configure(text="A temperatura em Fahreight e : " + str(F))

Bom é isso ai.

quarta-feira, 31 de dezembro de 2014

Random e Interface - Parte II

No post ANTERIOR, fizemos uma interface e um gerador de números aleatórios. Bom, havia alguns problemas no código.

Erros:

A lista não ficava ordenada, um usuário gostaria de que seu jogo estivesse em ordem crescente.
A lista poderia apresentar números repetidos, imagine o usuário indo jogar e seu código apresentava um, dois ou mais números repetidos.

Esses erros são comuns quando não analisamos o que o usuário poderá fazer. E sabe eles sempre fazem coisas que não acreditamos.

Enfim, vamos melhorar nosso código.

Código antigo ( somente será necessário modificar a função):

#funcao gerar
def gerar():
    listasena=range(6) 
    for i in range(0,5):
        listasena[i]=random.randrange(1,60)
    
    mlbl = Label(text=listasena).pack()



Novo código


#funcao gerar
def gerar():
    listasena = random.sample(range(60),6)
    listasena.sort()
    mlbl = Label(text=listasena).pack()

O que foi modificado?

Foi acrescentado o:

listasena = random.sample(range(1,60),6)

Agora com essa linha, não precisa mais da função for. Definimos o range(1,60) que vai de 1-60, e depois da virgula definimos quantos números aleatórios queremos. Basicamente uma linha nos salvou. E a linha:



listasena.sort()

coloca a lista em ordem.

Bom, isso deixa nosso código pronto para usar.

Código:

from Tkinter import *
import random

#funcao gerar
def gerar():
    listasena = random.sample(range(1,60),6)

    listasena.sort()
    mlbl = Label(text=listasena).pack()

#janela
mJanela = Tk()
mJanela.geometry("200x200")
mJanela.title("Sena")
#janela

#botao
mbtn2 = Button(text = 'Gerar', command = gerar).pack()
#botao

mJanela.mainloop()

terça-feira, 30 de dezembro de 2014

Random e Interface

Imagine que você queira implementar a função random junto à uma interface, e que ao clicar de um botão pelo usuário seria apresentado seis valores para ele jogar na Sena.

Bom, apesar de simples a ideia é um bom treino.

Vamos utilizar o código para criar uma lista com seis valores aleatórios.

#code
import random

#criando a lista com seis valores
k=range(6)

#for para colocar seis numeros aleatorios na lista
for i in range(0,5):
    numero = random.randrange(1, 60);
    k[i] = numero

#apresentar a lista nova
print 'os seis valores: ', k
#code


E o código para desenhar uma janela na tela.


#codigo
from Tkinter import *

mGui = Tk()
mGui.geometry("450x450")
mGui.title("Exemplo")
myButton = Button(text='botao').pack()

mGui.mainloop()#somente necessario no Windows
#codigo


A proposta será juntar esses dois códigos.

Vamos começar. 

 Para que aconteça alguma coisa ao clicar do botão, deve-se acrescentar o código command:


myButton = Button(text='botao'  , command = gerar  ).pack()


O gerar será o nome da função que será chamada ao evento clicar sobre o botão.
 A função será essa:


#funcao gerar
def gerar():
    listasena=range(6) 
    for i in range(0,5):
        listasena[i]=random.randrange(1,60)
    
    mlbl = Label(text=listasena).pack()


Bom, ao clicar no botão será chamada a função gerar, que cria uma lista com seis valores, e os mesmos são trocados por valores aleatórios de 1-60. 
Após isso temos a a linha:


mlbl = Label(text=listasena).pack()

Que chama uma Label que seu texto será o conteúdo da lista.

 

Cada vez que o botão gerar é clicado aparecerá uma linha com código. Ainda tem que se arrumar algumas coisas no código. Depois continuamos.

Código completo:


#codigo

from Tkinter import *
import random

#funcao gerar
def gerar():
    listasena = range(6)
    for i in range(0,5):
        listasena[i]=random.randrange(1,60)
    mlbl = Label(text=listasena).pack()

#janela
mJanela = Tk()
mJanela.geometry("200x200")
mJanela.title("Sena")
#janela

#botao
mbtn2 = Button(text = 'Gerar', command = gerar).pack()
#botao

mJanela.mainloop()
#codigo



Interface grafica - parte 2

Imagine agora que você queira colocar algo em sua janela. O básico é um botão, pois, é onde o usuário terá sua primeira iteração.

No Tkinter a sintaxe para botões é bem simples

#code
myButton = Button().pack()
#code

Com esse código simples você implementa um botão em sua janela.

#codigo
from Tkinter import *


mGui = Tk()
mGui.geometry("450x450")
mGui.title("Exemplo")
myButton = Button(text='botao').pack()

mGui.mainloop()#somente necessario no Windows
#codigo

Eu acrescentei o text = 'botao' no segundo código para acrescentar que dentro dos parenteses do Button é onde coloca-se os códigos de cor, texto e evento.



Outro código acrescentado foi o:

mGui.title("Exemplo")

Que coloca um nome na sua janela.