Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of the search in the remote database #376

Open
Ckbit opened this issue Jun 20, 2024 · 0 comments
Open

Implementation of the search in the remote database #376

Ckbit opened this issue Jun 20, 2024 · 0 comments

Comments

@Ckbit
Copy link

Ckbit commented Jun 20, 2024

I am unable to implement the search for the remote database in my code.
How do I connect to the database, make requests and update information?

This code has some comments and words in Brazilian Portuguese

`
import PySimpleGUI as sg
import sqlite3

Conectando no Banco de Dados

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

conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute('SELECT NOME FROM VALES')
items = cursor.fetchall()
conn.close()

Busca o codigo digitado no banco de dados

def buscar_codigo_sql(codigo_digitado):
conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM VALES WHERE CHAVE = ?", (codigo_digitado,))
row = cursor.fetchone()
conn.close()
return row is not None

def atualizar_status_sql(codigo_digitado):
conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute("UPDATE VALES SET status = 'inativo' WHERE chave = ?", (codigo_digitado,))
conn.commit()
conn.close()

Retorna o nome do vale referente ao codigo digitado

def buscar_nome_sql(codigo_digitado):
conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute("SELECT nome FROM VALES WHERE chave = ?", (codigo_digitado,))
row = cursor.fetchone()
conn.close()
if row:
return row[0] # Retorna o nome
else:
return None # Retorna none se não encontrar nada

Retorna o status do vale referente ao codigo digitado

def buscar_status_sql(codigo_digitado):
conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute("SELECT status FROM VALES WHERE chave = ?", (codigo_digitado,))
row = cursor.fetchone()
conn.close()
if row:
return row[0] # Retorna o valor do status
else:
return None # Retorna none se não encontrar nada

Janela do menu principal

def janela_menu():
janela_menu_texto = [
[sg.Text(f'Mozinho lindo', font=('Helvetica', 16, 'bold'))],
]
janela_menu = [
[sg.Canvas(size=(104, 104), key='canvas', background_color='red'), sg.Column(janela_menu_texto)],
[sg.Text()],
[sg.Button('Resgatar vales', key='botao_resgatar_vales', size=(15, 2)), sg.Button('Visualizar vales resgatados', size=(15, 2), key='botao_visualizar_resgatados'), sg.Button('Fechar', size=(15, 2), key='botao_fechar')],
]
menu = sg.Window('menu', layout=janela_menu, size=(427, 210))
return menu

Janela do listbox de resgatados

def janela_resgatados():
layout = [
[sg.Listbox(values=[item[0] for item in items], size=(40, 14), key='listbox', font=('Helvetica', 16))],
[sg.Push(), sg.Button('Voltar', key='botao_voltar_resgatados')]
]
window = sg.Window('items', layout, size=(400, 400))
return window

Janela para resgatar os codigos

def janela_resgatar():
layout = [
[sg.Text("Vales")],
[sg.InputText(key="input")],
[sg.Button("Resgatar"), sg.Button("Sair"), sg.Button("Limpar"), sg.Button("Voltar")]
]
# Criação da janela
window = sg.Window("Vales", layout)
return window

Loop do código principal

while True:
janela = janela_menu()
event, value = janela.read()

if event == sg.WINDOW_CLOSED or event == "botao_fechar":
    break

elif event == "botao_resgatar_vales":
    janela.close()
    janela = janela_resgatar()

    while True:
        event, value = janela.read()

        if event == sg.WINDOW_CLOSED or event == "Sair":
            janela.close()
            janela = janela_menu()
            break

        elif event == "Resgatar":
            codigo_digitado = value["input"]

            if buscar_codigo_sql(codigo_digitado):
                status_vale = buscar_status_sql(codigo_digitado)
                if status_vale == "ativo":
                    nomeVale = buscar_nome_sql(codigo_digitado)
                    if nomeVale:
                        sg.popup(f"Nome: {nomeVale}")
                        atualizar_status_sql(codigo_digitado)  # Chamada da função para atualizar o status
                        janela.close()

                    else:
                        sg.popup("Erro ao buscar nome!")
                        janela["input"].update('')
                else:
                    sg.popup("Vale inativo!")

            else:
                sg.popup("Código incorreto!")

        elif event == "Limpar":
            janela["input"].update('')

        elif event == "Voltar":
            janela.close()
            break

elif event == "botao_visualizar_resgatados":
    janela.close()
    janela = janela_resgatados()
    event, value = janela.read()

    if event == sg.WINDOW_CLOSED:
        break

    elif event == "botao_voltar_resgatados":
        janela.close()

Fechamento da janela

janela.close()

Comando para compilar o arquivo .py para .exe:

pyinstaller --onefile -w vales.py

pyinstaller -> nome da ferramenta

--onefile -> agrupa tudo em um unico .exe

-w -> caso tenha alguma interface gráfica

vales.py -> nome do arquivo .py que será compilado

`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant