Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULDADE DE ENGENHARIA
Programação II
UMUM
Introdução........................................................................................3
Interfaces gráficas..............................................................................4
Tkinter............................................................................................4
event handler....................................................................................8
Conclusão.......................................................................................13
Bibliografia......................................................................................14
Apêndices.......................................................................................15
Introdução
Tkinter
Botão de rádio (radio button): tipo especial de botão, com o qual são
formados grupos aonde apenas um pode ser apertado de cada vez.
Botão giratório (spin button): caixa de texto com dois botões com setas ao
lado que incrementam e decrementam o número na caixa.
Barra de status (status bar): barra para exibição de mensagens, geralmente
na parte inferior da janela.
Caixa vertical (vertical box): semelhante à tabela, porém apenas com uma
coluna.
Caderno (notebook): várias áreas que podem ser visualizadas uma de cada
vez quando selecionadas através de abas, geralmente na parte superior.
Barra de ferramentas (toolbar): área com botões para acesso rápido aos
principais recursos do aplicativo.
import tkinter
class Application:
pass
root = Tk()
Application(root)
root.mainloop()
Depois instanciamos a classe TK () através da variável root, que foi criada no final
do código. Essa classe permite que os widgets possam ser utilizados na aplicação.
1. Pack;
2. Grid;
3. Place.
Exemplo:
class Application:
def __init__(self, master=None):
self.widget1 = Frame(master)
self.widget1.pack()
self.msg = Label(self.widget1, text="Primeiro widget")
self.msg["font"] = ("Verdana", "10", "italic", "bold")
self.msg.pack ()
self.sair = Button(self.widget1)
self.sair["text"] = "Sair"
self.sair["font"] = ("Calibri", "10")
self.sair["width"] = 5
self.sair["command"] = self.widget1.quit
self.sair.pack ()
root = Tk()
Application(root)
root.mainloop()
Saída:
event handler
Os event handlers são acções que executadas como resposta a determinado evento.
Sempre que um evento ocorre, o event loop o interpreta como uma string. Por
exemplo, ao clicar com o botão esquerdo do mouse, o event loop interpreta esta
ação pela string "": o botão ENTER é representado pela string "" e o botão direito do
mouse pela string "".
def mudarTexto(self):
if self.msg["text"] == "Primeiro widget":
self.msg["text"] = "O botão recebeu um clique"
else:
self.msg["text"] = "Primeiro widget"
root = Tk()
Application(root)
root.mainloop()
Quando executamos este código e o botão que foi criado recebe um clique, o texto
é modificado na tela, graças ao event handler associado ao bind, como mostra
a figura.
Para receber dados do usuário vamos usar o widget Entry, onde os mesmos são
capturados como string, de forma semelhante ao método input.
A DBI define que o módulo deve ter uma função connect(), retorna objetos de
conexão. A partir do do objeto conexão, é possível obter um objeto cursor, que
permite a execução de sentenças SQL e a recuperação dos dados (uma lista de
tuplas com os resultados, por default).
Para instalar o DBI para comunicar a aplicação Python e a base de dados MySQL
usamos o comando: pip3 install mysql-conector-python
con =
mysql.connector.connect(host='localhost',database='lwand',user='root',password='12
3**')
if con.is_connected():
db_info = con.get_server_info()
cursor = con.cursor()
cursor.execute("select database();")
linha = cursor.fetchone()
if con.is_connected():
cursor.close()
con.close()
class Banco():
def __init__(self):
self.conexao = sqlite3.connect('banco.db')
self.createTable()
def createTable(self):
c = self.conexao.cursor()
c.execute("""create table if not exists usuarios (
nome text,
telefone text,
email text,
usuario text,
senha text)""")
self.conexao.commit()
c.close()
Conclusão
No Python, a integração de uma aplicação com SGBDs é feita na maioria dos casos
através de um módulo DBI., que usa a API cliente para se comunicar com o banco
de dados. A DBI define que o módulo deve ter uma função connect(), retorna
objectos de conexão. A partir do objecto conexão, é possível obter um objecto
cursor, que permite a execução de sentenças SQL e a recuperação dos dados (uma
lista de tuplas com os resultados, por padrão).
Bibliografia
https://wiki.python.org/moin/GuiProgramming/
https://mayararysia.medium.com/python-conex%C3%A3o-com-o-mysql-
d919bb596702/
Apêndices
class Application:
self.primeiroContainer = Frame(master)
self.primeiroContainer["pady"] = 10
self.primeiroContainer.pack()
self.segundoContainer = Frame(master)
self.segundoContainer["padx"] = 20
self.segundoContainer.pack()
self.terceiroContainer = Frame(master)
self.terceiroContainer["padx"] = 20
self.terceiroContainer.pack()
self.quartoContainer = Frame(master)
self.quartoContainer["pady"] = 20
self.quartoContainer.pack()
self.titulo.pack()
self.nomeLabel = Label(self.segundoContainer,text="Nome",
font=self.fontePadrao)
self.nomeLabel.pack(side=LEFT)
self.nome = Entry(self.segundoContainer)
self.nome["width"] = 30
self.nome["font"] = self.fontePadrao
self.nome.pack(side=LEFT)
self.senhaLabel.pack(side=LEFT)
self.senha = Entry(self.terceiroContainer)
self.senha["width"] = 30
self.senha["font"] = self.fontePadrao
self.senha["show"] = "*"
self.senha.pack(side=LEFT)
self.autenticar = Button(self.quartoContainer)
self.autenticar["text"] = "Autenticar"
self.autenticar["width"] = 12
self.autenticar["command"] = self.verificaSenha
self.autenticar.pack()
self.mensagem.pack()
def verificaSenha(self):
usuario = self.nome.get()
senha = self.senha.get()
self.mensagem["text"] = "Autenticado"
else:
Application(root)
root.mainloop()
Saída: