2017-12-07 2 views
-3

Wie ist es möglich, die Einträge für Login und Passwort zu überprüfen und wenn sie korrekt sind, werden neue Tabs geöffnet. Wenn die Einträge falsch sind, wird eine Fehlermeldung angezeigt. Der Benutzer sollte sich auch für ein Konto registrieren können.Benutzer-Login-System mit Benutzername und Passwort

from tkinter import * 
import sqlite3 
import tkinter 
import time 
root = Tk() 

root.title("Sale System") 
root.geometry("500x500") 
root.configure(background='grey') 

Label(root, text="Checkout System", background='grey').grid(row=0, column=1) 
Label(root, text="Time:", background='grey').grid(row=1, column=1) 

def clock(): 
    t=time.strftime('%I:%M:%S',time.localtime()) 
    if t!='': 
     labeltime.config(text=t) 
    root.after(100,clock) 
labeltime=Label(root, text="Current System Time", background='grey') 
labeltime.grid(row=1, column=1) 
time1 = clock() 

def new_winF(): #Opens registration confirmation window 
    newwin = Toplevel(root) 
    display = Label(newwin, text="Your account has been created. Please log in with your new details. This window may be closed.") 
    display.pack()  


Label(root, text="Username:", background='grey').grid(row=3, column=0, sticky=W) 
Label(root, text="Password:", background='grey').grid(row=4, column=0, sticky=W) 

e1 = Entry(root) 
e1.grid(row=3, column=1) 


if e1 == 'yes': 
    command =new_winF 


e2 = Entry(root) 
e2.grid(row=4, column=1) 

LoginButton = Button(root, text="Login", width=10) 
LoginButton.grid(row=5, column=1) 

RegisterButton = Button(root, text ="Register", command =new_winF, width=10) 
RegisterButton.grid(row=6, column=1) 


root.mainloop() 
+0

Setzen Sie alle Funktionen vor 'root = Tk()', um Code lesbarer zu machen. Jetzt sehe ich nur Chaos. – furas

+0

BTW: Um Text von'Entry' zu erhalten, müssen Sie 'e1.get()' verwenden, aber das Programm wartet nicht, bis Sie Text in Entry geschrieben haben (es ist nicht 'input()', das den Feind "Enter" prüft) checking 'if e1 == 'yes':' direkt nach 'e1 = Eintrag (root)' macht keinen Sinn - 'e1.get()' gibt einen leeren String – furas

+0

Sie haben uns gesagt, was Sie wollen, haben aber nicht erklärt, welche Hilfe Sie benötigen Was ist Ihre Frage? Fragen der Form "Warum funktioniert mein Code nicht?" sind hier nicht verfügbar. Sie müssen etwas genaueres fragen. –

Antwort

0

Es gibt zu viele Änderungen, um es zu beschreiben.

BTW: Ich benutze Frame gruppieren Widgets und später kann ich einen Frame zeigen (pack()/grid()) und verbergen andere (pack_forget()/grid_forget()). Es gibt nützlichere Beispiele mit dieser Methode.

import tkinter as tk 
import time 

# --- functions --- 

def clock(): 
    txt = time.strftime('%I:%M:%S', time.localtime()) 
    label_time.config(text=txt) 
    root.after(1000, clock) 

def on_register(): #Opens registration confirmation window 
    newwin = tk.Toplevel(root) 
    display = tk.Label(newwin, text="\nYour account has been created.\nPlease log in with your new details.\n\nThis window may be closed.") 
    display.pack()  
    tk.Button(newwin, text='Close', command=newwin.destroy).pack() 

def on_login(): #Opens registration confirmation window 
    newwin = tk.Toplevel(root) 
    if e1.get() == 'admin' and e2.get() == '12345': 
     display = tk.Label(newwin, text="\nYour are logged in.\n\nThis window may be closed.") 
     display.pack()  

     main_page.pack_forget() # hide it 
     other_page.pack() # show it 
    else: 
     display = tk.Label(newwin, text="\nWrong login or password.\n\nThis window may be closed.") 
     display.pack()  
    tk.Button(newwin, text='Close', command=newwin.destroy).pack() 

def create_main_page(): 
    global label_time 
    global e1 
    global e2 

    frame = tk.Frame(root) 
    #frame.pack() # don't show it 

    tk.Label(frame, text="Checkout System", background='grey').grid(row=0, column=1) 
    tk.Label(frame, text="Time:", background='grey').grid(row=1, column=1) 

    label_time = tk.Label(frame, text="Current System Time", background='grey') 
    label_time.grid(row=1, column=1) 

    clock() 

    tk.Label(frame, text="Username:", background='grey').grid(row=3, column=0, sticky='w') 
    tk.Label(frame, text="Password:", background='grey').grid(row=4, column=0, sticky='w') 

    e1 = tk.Entry(frame) 
    e1.grid(row=3, column=1) 

    e2 = tk.Entry(frame) 
    e2.grid(row=4, column=1) 

    login_button = tk.Button(frame, text="Login", width=10, command=on_login) 
    login_button.grid(row=5, column=1) 

    register_button = tk.Button(frame, text="Register", width=10, command=on_register) 
    register_button.grid(row=6, column=1) 

    return frame 

def create_other_page(): 
    frame = tk.Frame(root) 
    #frame.pack() # don't show it 

    tk.Label(frame, text="You are on other page", background='grey').grid(row=0, column=1) 

    return frame 

# ---- main --- 

root = tk.Tk() 

root.title("Sale System") 
root.geometry("500x500") 
root.configure(background='grey') 

main_page = create_main_page() 
main_page.pack() # show it 

other_page = create_other_page() 
#other_page.pack() # don't show it yet 

root.mainloop() 
+0

Tolle Lösung. Danke –

+0

siehe: https: // stackoverflow.com/a/7557028/1832058 – furas

0

eine Funktion erstellen und binden es Knopf um sich einzuloggen um die Eingabe zu überprüfen inputs.Here Sie Ihren Benutzernamen Eintrag yesno das Passwort sein sollte, wenn es das Fenster passt dann auftauchen, wenn nicht zu alarmieren mesagebox wird es knallen zu der Benutzer.

from tkinter import * 
import sqlite3 
from tkinter import messagebox 
import tkinter 
import time 


root = Tk() 

root.title("Sale System") 
root.geometry("500x500") 
root.configure(background='grey') 

Label(root, text="Checkout System", background='grey').grid(row=0, column=1) 
Label(root, text="Time:", background='grey').grid(row=1, column=1) 

def clock(): 
    t=time.strftime('%I:%M:%S',time.localtime()) 
    if t!='': 
     labeltime.config(text=t) 
    root.after(100,clock) 

labeltime=Label(root, text="Current System Time", background='grey') 
labeltime.grid(row=1, column=1) 
time1 = clock() 



def new_winF(): #Opens registration confirmation window 
    newwin = Toplevel(root) 
    display = Label(newwin, text="Your account has been created. Please log in with your new details. This window may be closed.") 
    display.pack() 



Label(root, text="Username:", background='grey').grid(row=3,column=0,sticky=W) 
Label(root, text="Password:", background='grey').grid(row=4, column=0, 
sticky=W) 



def login_fun(): 
    if e1.get() == "yes" and e2.get() == "no": 
     new_winF() 
    else: 
     messagebox.showerror("error","try agian boy") 




e1 = Entry(root) 
e1.grid(row=3, column=1) 

e2 = Entry(root) 
e2.grid(row=4, column=1) 

LoginButton = Button(root, text="Login", width=10, command=login_fun) 
LoginButton.grid(row=5, column=1) 

RegisterButton = Button(root, text ="Register", command =new_winF, width=10) 
RegisterButton.grid(row=6, column=1) 


root.mainloop() 
+0

Das funktioniert gut.Danke –

+0

haken Sie die Markierung neben dem Code –

+0

für zukünftige Referenz –