PySimpleGUI + SQLite3 – #05 – Project details and implementation

Posted by


Neste tutorial, vamos falar sobre como utilizar o PySimpleGUI juntamente com o SQLite3 para criar uma aplicação que gerencia detalhes de um projeto. Vamos abordar os passos necessários para criar a interface gráfica, adicionar funcionalidades de CRUD (Create, Read, Update, Delete) e armazenar os dados em um banco de dados SQLite.

Passo 1: Preparação do ambiente

Antes de começar, certifique-se de que você tem o PySimpleGUI e o SQLite3 instalados em seu ambiente Python. Você pode instalá-los usando o comando abaixo:

pip install PySimpleGUI
pip install sqlite3

Passo 2: Criar a interface gráfica

Vamos começar criando a interface gráfica da aplicação. Abaixo está um exemplo de como seria a estrutura básica da nossa interface:

import PySimpleGUI as sg

layout = [
    [sg.Text('Nome do projeto:'), sg.InputText(key='nome')],
    [sg.Text('Descrição:'), sg.InputText(key='descricao')],
    [sg.Button('Adicionar'), sg.Button('Editar'), sg.Button('Deletar')],
    [sg.Listbox(values=[], size=(30, 5), key='lista_projetos')]
]

window = sg.Window('Detalhes do projeto', layout)

Neste exemplo, criamos uma janela com campos para inserir o nome e a descrição do projeto, botões para adicionar, editar e deletar projetos, e uma listbox para exibir os projetos cadastrados.

Passo 3: Conectar ao banco de dados SQLite

Agora, vamos criar a conexão com o banco de dados SQLite e criar a tabela projetos para armazenar os projetos. Abaixo está um exemplo de como fazer isso:

import sqlite3

conn = sqlite3.connect('projetos.db')
cursor = conn.cursor()

cursor.execute('CREATE TABLE IF NOT EXISTS projetos (id INTEGER PRIMARY KEY, nome TEXT, descricao TEXT)')

conn.commit()

Passo 4: Implementar as funcionalidades CRUD

Agora, vamos implementar as funcionalidades de CRUD para adicionar, editar, listar e deletar projetos. Abaixo está um exemplo de como fazer isso:

# Adicionar um projeto
def adicionar_projeto(nome, descricao):
    cursor.execute('INSERT INTO projetos (nome, descricao) VALUES (?, ?)', (nome, descricao))
    conn.commit()

# Editar um projeto
def editar_projeto(nome, descricao, id):
    cursor.execute('UPDATE projetos SET nome = ?, descricao = ? WHERE id = ?', (nome, descricao, id))
    conn.commit()

# Listar projetos
def listar_projetos():
    cursor.execute('SELECT * FROM projetos')
    projetos = cursor.fetchall()
    return projetos

# Deletar um projeto
def deletar_projeto(id):
    cursor.execute('DELETE FROM projetos WHERE id = ?', (id,))
    conn.commit()

Passo 5: Integrar a interface gráfica com as funcionalidades CRUD

Agora, vamos integrar a interface gráfica com as funcionalidades CRUD que acabamos de implementar. Abaixo está um exemplo de como fazer isso:

while True:
    event, values = window.read()

    if event == sg.WIN_CLOSED:
        break
    elif event == 'Adicionar':
        adicionar_projeto(values['nome'], values['descricao'])
        window['lista_projetos'].update(values=listar_projetos())
    elif event == 'Editar':
        editar_projeto(values['nome'], values['descricao'], values['lista_projetos'][0])
        window['lista_projetos'].update(values=listar_projetos())
    elif event == 'Deletar':
        deletar_projeto(values['lista_projetos'][0])
        window['lista_projetos'].update(values=listar_projetos())

window.close()

Neste exemplo, estamos atualizando a lista de projetos toda vez que um projeto é adicionado, editado ou deletado.

Conclusão

Neste tutorial, você aprendeu como utilizar o PySimpleGUI juntamente com o SQLite3 para criar uma aplicação que gerencia detalhes de projetos. Você aprendeu a criar a interface gráfica, a conectar ao banco de dados SQLite, a implementar funcionalidades CRUD e a integrar a interface gráfica com as funcionalidades CRUD. Espero que este tutorial tenha sido útil e que você consiga criar suas próprias aplicações utilizando essas tecnologias.

0 0 votes
Article Rating
6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@betobyte
2 months ago

Like, e muito obrigado!

@maiconsaraujo
2 months ago

Obrigado amigo vc e demais

@kbrunot13
2 months ago

Manda muito 😔✋💫

@IgaoAlpha
2 months ago

Ex:
P
r
o
d
u
t
o

@IgaoAlpha
2 months ago

mano fiz um codigo parecido onde preciso adicionar produtos, porem no meu esta com um erro, onde quando adiciona um produto, ele retorna o produto na listbox so que em cada letra da palavra do nome do item em linha separadas

@MrExdefalt
2 months ago

se loko brabo de mais , manda contudo ai maluco , brabo de mais o conteudo tmj abraco