Interface Gráfica

Interface Gráfica

  • Não basta funcionar, deve ser bonito também

  • Interface texto funciona, mas é pobre

  • GUI – Graphical User Interface

  • Show de Calouros

Show de Calouros

  • Opção 1 para resposta correta e 2 para errada

  • Teremos um efeito sonoro para cada resposta

  • O programa deve contar quantas respostas certas e erradas houve

  • Finalmente apertamos 0 para finalizar

Show de Calouros

+Atenção: instalar Pygame e baixar os arquivos de áudio para continuar a lição

Show de Calouros

import pygame.mixer
sounds = pygame.mixer
sounds.init()

def espera_tocar(canal):
   while canal.get_busy():
      pass

s = sounds.Sound("heartbeat.wav")
espera_tocar(s.play())
s2 = sounds.Sound("buzz.wav")
espera_tocar(s2.play())
s3 = sounds.Sound("ohno.wav")
espera_tocar(s3.play())
s4 = sounds.Sound("carhorn.wav")
espera_tocar(s4.play())

Show de Calouros

  • Agora que o áudio está funcionando vamos fazer o programa do Show de Calouros!

Show de Calouros

import pygame.mixer
sounds = pygame.mixer
sounds.init()

def espera_tocar(canal):
   while canal.get_busy():
      pass

certos = 0
errados = 0
opcao = int(input("Aperte 1)Certo 2)Errado e 0) Finalizar"))

while opcao != 0:
   if opcao == 1:
      s = sounds.Sound("correct.wav")
      espera_tocar(s.play())
      certos = certos + 1
   if opcao == 2"
      s2 = sounds.Sound("wrong.wav")
      espera_tocar(s2.play())
      errados = errados + 1
   opcao = int(input("Aperte 1)Certo 2)Errado e 0) Finalizar"))

print("Certos:",certos,"Errados:",errados)

Show de Calouros

  • Resultado -

Show de Calouros

Janela básica

from tkinter import *
app = Tk()
app.title("Show de calouros")
app.geometry('300x100+200+100')

b1 = Button(app,text = "Certo!", width = 10)
b1.pack(side = "left",padx = 10,pady = 10)

b2 = Button(app,text = "Errado!", width = 10)
b2.pack(side = "right",padx = 10,pady = 10)

Capturando um evento

Show de Calouros

from tkinter import *

app = Tk()
app.title("Show de calouros")
app.geometry('300x100+200+100')

import pygame.mixer

sounds = pygame.mixer
sounds.init()
certos = 0
errados = 0

def espera_tacor(canal):
   while canal.get_busy():
      pass

def musica_certa():
   global certos
   s = sounds.Sound("correct.wav")
   espera_tocar(s.play())
   certos += 1

def musica errados():
   global errados
   s = sounds.Sound("wrong.wav")
   espera_tocar(s.play())
   errados += 1

b1 = Button(app,text = "Certo!", width = 10)
b1.pack(side = "left",padx = 10,pady = 10)

b2 = Button(app,text = "Errado!", width = 10)
b2.pack(side = "right",padx = 10,pady = 10)

app.mainloop()

Show de Calouros

Adicionando Label´s

from tkinter import *
app = Tk()
app.title("Show de calouros")
app.geometry('300x100+200+100')

import pygame.mixer
sounds = pygame.mixer
sounds.init()
certos = IntVar()
certos.set(0)
errados = IntVar()
errados.set(0)

def espera_tacor(canal):
   while canal.get_busy():
      pass

def musica_certa():
   s = sounds.Sound("correct.wav")
   espera_tocar(s.play())
   certos.set(certos.get() + 1)

def musica errados():
   s = sounds.Sound("wrong.wav")
   espera_tocar(s.play())
   errados.set(errados.get() + 1)

Adicionando Label´s

lab = Label(app,text = 'Aperte os botoes!',height = 3)
lab.pack()

lab1 = Label(app, textvariable = certos)
lab1.pack(side = 'left')
lab1 = Label(app, textvariable = errados)
lab1.pack(side = 'right')

b1 = Button(app,text = "Certo!", width = 10, command = musica_certa)
b1.pack(side = "left",padx = 10,pady = 10)

b2 = Button(app,text = "Errado!", width = 10, command = musica_certa)
b2.pack(side = "right",padx = 10,pady = 10)

app.mainloop

Show de Calouros

Revisão

  • Usando biblioteca de terceiros: pygame

  • Loop de evento: responde apenas quando o evento ocorre

  • Tratador do evento: rotina que é executada quando o evento ocorre

  • pass – código python para não fazer nada

  • Tkinter: biblioteca para interface gráfica

Show Comments
Next Section - MVC