massimo94
Profilo di
Nome | massimo94 |
---|---|
Indirizzo email | n/a |
Messaggi | 2 |
-
- 2022-12-15 11:46:10
- Re: Programma in Python con interfaccia locale
- Forum >> Programmazione Python >> Database
- nuzzopippo said @ 2022-12-15 11:38:07:Il problema Ti è dato, in primo luogo, dalla visibilità delle variabili, così come è strutturato il codice l'user non verrà msi loggato a PostgreSQL perché non avviene alcuna connessione, che definisci all'inizio del codice con gli equivoci parametri:
user="postgres_user", password="postgres_password", database="postgres_database"
(Non ti da nessun errore sulla connessione?)
Dovresti strutturarti una funzione alla quale passi i parametri di login e Ti restituisca la connessione, da invocare al login per poi proseguire con le successive operazioni.
... disgiuntamente dal problema "connessione", suggerirei di approfondire gli aspetti di "Visibilità" e "scope" delle variabili in python, oltre che strutturarlo considerando le classi, così come è il codice si presta molto poco ad applicazioni appena più che elementari.
Edit integrato "user" nella citazione ... giacché ci sono aggiungo che i parametri di login inseriti dall'user non saranno mai visibili da "conn" tanto per questioni di visibilità quanto per questioni di posizione (si, anche la posizione del codice è significativa)
--- Ultima modifica di nuzzopippo in data 2022-12-15 11:45:10 ---Risolto grazie eventualmente posso chiedere una libreria dall'aspetto piu moderno rispetto a tkinter?
-
- 2022-12-15 10:04:38
- Programma in Python con interfaccia locale
- Forum >> Programmazione Python >> Database
Buongiorno,
ho creato un codice che mischia l'interfaccia al database, però una volta partito il programma la connessione non avviene.
In allegato il codice
import tkinter as tk import psycopg2 # Crea la finestra principale root = tk.Tk() # Crea una connessione a Postgres conn = psycopg2.connect( host="localhost", user="postgres_user", password="postgres_password", database="postgres_database" ) # Crea un frame per i campi di login login_frame = tk.Frame(root) # Crea i campi per l'username e la password username_label = tk.Label(login_frame, text="Username:") username_entry = tk.Entry(login_frame) password_label = tk.Label(login_frame, text="Password:") password_entry = tk.Entry(login_frame, show="*") # Visualizza i campi per l'username e la password username_label.grid(row=0, column=0) username_entry.grid(row=0, column=1) password_label.grid(row=1, column=0) password_entry.grid(row=1, column=1) # Crea il pulsante di login login_button = tk.Button( login_frame, text="Login", command=lambda: login( username_entry.get(), password_entry.get() ) ) # Visualizza il pulsante di login login_button.grid(row=2, column=1) # Mostra il frame per i campi di login login_frame.pack() # Definisci la funzione di login def login(username, password): # Esegui una query per verificare se l'username e la password sono corretti with conn: cur = conn.cursor() cur.execute( "SELECT COUNT(*) FROM users WHERE username = %s AND password = %s", (username, password) ) count = cur.fetchone()0 # Se l'username e la password sono corretti, esegui un'azione di successo if count == 1: login_frame.destroy() success_label = tk.Label(root, text="Login effettuato con successo") success_label.pack() # Altrimenti, visualizza un messaggio di errore else: error_label = tk.Label(root, text="Username o password non validi") error_label.pack() # Avvia il loop dell'interfaccia grafica root.mainloop()