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()