Çözüldü Python ile giriş ayaryüzü yaparken hata

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
11 Ağustos 2019
Mesajlar
4.102
Makaleler
9
Çözümler
53
Merhaba arkadaşlar. Python'da giriş yapmak için arayüz yaparken, çalışıyor mu diye denerken kullanıcı adı ve parolayı doğru yazmama rağmem atadığm 'parola yanlış' error box çalışıyor. Hatada kendi atadığım kullanıcı adı ya da şifre yalnış yazıyor. Bilen arkadaşlar yardımcı olursa çok sevinirim.



Kod:
import tkinter
from tkinter import *

from tkinter import messagebox

pencere = Tk()

pencere.title("Min Konto")
pencere.geometry("600x400")


#Giris yapma buton fonksiyonu


username = 8800
password = 8800



# Center textim


center_text = Label(pencere, text= 'Logga in:')
center_text.config(font=("Arial", 30, 'bold'))
center_text.grid(padx=220, pady=10)

#Forsta text
def forsta_texten():

    Forsta_text = Label(pencere, text = 'Username:')
    Forsta_text.config(font=("Arial", 10))
    Forsta_text.grid(column=50, row=20)
    Forsta_text.place(x=170, y=77)

#Username yazi bosluk

username1 = tkinter.StringVar(pencere)
password1 = tkinter.StringVar(pencere)
username_alan = Entry(pencere, bd=8,textvariable= username1)
username_alan.grid(padx=110, pady=3)



#Password yazi bosluk

password_alan = Entry(pencere,show='*', bd=8, textvariable=password1)
password_alan.grid(padx=110, pady=3)




if username1 == username:
    print('Username dogru')
elif password1 == password:
    print('Password dogru')
#Andra text
def andra_text():
    Andra_text = Label(pencere, text = 'Password:')
    Andra_text.config(font=("Arial", 10))
    Andra_text.grid(column=50, row=20)
    Andra_text.place(x=170, y=120)



def buton_fonksiyonu():
    if (username1 == username and password1 == password):
        tkinter.messagebox.showinfo(title='Min Konto', message='Successfully logged in to the account!')

    elif (username1 != username) and (password1 != password):
        tkinter.messagebox.showerror(title= 'Min Konto', message='Användarnamnet eller lösenordet är felaktigt!')


#Buton1

def buton1 ():
    buton_forsta = tkinter.Button(text= 'Login',height=1,width=20, command= lambda: buton_fonksiyonu())
    buton_forsta.config(font= ('Arial',10, 'bold'))
    buton_forsta.place(x=200,y=175)

andra_text()
forsta_texten()
buton1()
center_text








# formu çiz


pencere.mainloop()
 
Çözüm
@Linuxginar dostum maalesef aynı şeyi username = 'sahil123' ve password = 'sahil123' en az 30 kere denedim.
Bir hata daha var, StringVar degeri almak icin .get() metodunu calistirmalisin.

Python:
import tkinter
from tkinter import *

from tkinter import messagebox

pencere = Tk()

pencere.title("Min Konto")
pencere.geometry("600x400")


#Giris yapma buton fonksiyonu


username = "8800"
password = "8800"



# Center textim


center_text = Label(pencere, text= 'Logga in:')
center_text.config(font=("Arial", 30, 'bold'))
center_text.grid(padx=220, pady=10)

#Forsta text
def forsta_texten():

    Forsta_text = Label(pencere, text = 'Username:')
    Forsta_text.config(font=("Arial", 10))
    Forsta_text.grid(column=50, row=20)
    Forsta_text.place(x=170, y=77)

#Username yazi bosluk

username1 = tkinter.StringVar(pencere)
password1 = tkinter.StringVar(pencere)
username_alan = Entry(pencere, bd=8,textvariable= username1)
username_alan.grid(padx=110, pady=3)



#Password yazi bosluk

password_alan = Entry(pencere,show='*', bd=8, textvariable=password1)
password_alan.grid(padx=110, pady=3)



print(username1.get())
if username1.get() == username:
    print('Username dogru')
elif password1.get() == password:
    print('Password dogru')
#Andra text
def andra_text():
    Andra_text = Label(pencere, text = 'Password:')
    Andra_text.config(font=("Arial", 10))
    Andra_text.grid(column=50, row=20)
    Andra_text.place(x=170, y=120)



def buton_fonksiyonu():
    if (username1.get() == username and password1.get() == password):
        tkinter.messagebox.showinfo(title='Min Konto', message='Successfully logged in to the account!')

    elif (username1.get() != username) and (password1.get() != password):
        tkinter.messagebox.showerror(title= 'Min Konto', message='Användarnamnet eller lösenordet är felaktigt!')


#Buton1

def buton1 ():
    buton_forsta = tkinter.Button(text= 'Login',height=1,width=20, command= lambda: buton_fonksiyonu())
    buton_forsta.config(font= ('Arial',10, 'bold'))
    buton_forsta.place(x=200,y=175)

andra_text()
forsta_texten()
buton1()
center_text








# formu çiz


pencere.mainloop()

Dogru olan kod.
Sorun su dostum, sen sifreyi Integer olarak belirlemissin, ornegin username="8800" password="8800" diye yapsan calisirdi.
 
@Linuxginar dostum maalesef aynı şeyi username = 'sahil123' ve password = 'sahil123' en az 30 kere denedim.
Bir hata daha var, StringVar degeri almak icin .get() metodunu calistirmalisin.

Python:
import tkinter
from tkinter import *

from tkinter import messagebox

pencere = Tk()

pencere.title("Min Konto")
pencere.geometry("600x400")


#Giris yapma buton fonksiyonu


username = "8800"
password = "8800"



# Center textim


center_text = Label(pencere, text= 'Logga in:')
center_text.config(font=("Arial", 30, 'bold'))
center_text.grid(padx=220, pady=10)

#Forsta text
def forsta_texten():

    Forsta_text = Label(pencere, text = 'Username:')
    Forsta_text.config(font=("Arial", 10))
    Forsta_text.grid(column=50, row=20)
    Forsta_text.place(x=170, y=77)

#Username yazi bosluk

username1 = tkinter.StringVar(pencere)
password1 = tkinter.StringVar(pencere)
username_alan = Entry(pencere, bd=8,textvariable= username1)
username_alan.grid(padx=110, pady=3)



#Password yazi bosluk

password_alan = Entry(pencere,show='*', bd=8, textvariable=password1)
password_alan.grid(padx=110, pady=3)



print(username1.get())
if username1.get() == username:
    print('Username dogru')
elif password1.get() == password:
    print('Password dogru')
#Andra text
def andra_text():
    Andra_text = Label(pencere, text = 'Password:')
    Andra_text.config(font=("Arial", 10))
    Andra_text.grid(column=50, row=20)
    Andra_text.place(x=170, y=120)



def buton_fonksiyonu():
    if (username1.get() == username and password1.get() == password):
        tkinter.messagebox.showinfo(title='Min Konto', message='Successfully logged in to the account!')

    elif (username1.get() != username) and (password1.get() != password):
        tkinter.messagebox.showerror(title= 'Min Konto', message='Användarnamnet eller lösenordet är felaktigt!')


#Buton1

def buton1 ():
    buton_forsta = tkinter.Button(text= 'Login',height=1,width=20, command= lambda: buton_fonksiyonu())
    buton_forsta.config(font= ('Arial',10, 'bold'))
    buton_forsta.place(x=200,y=175)

andra_text()
forsta_texten()
buton1()
center_text








# formu çiz


pencere.mainloop()

Dogru olan kod.
 
Çözüm

Bunu mu kastediyorsun dostum?

Kod:
username1 = tkinter.StringVar(pencere)
password1 = tkinter.StringVar(pencere)
 
Bunu mu kastediyorsun dostum?

Kod:
username1 = tkinter.StringVar(pencere)
password1 = tkinter.StringVar(pencere)
Hayir, duzelttigim halini attim.


Ek olarak boyle hatalarda her iki degeri de ekrana yazdirmayi deneyin, unuttugunuz seyleri gormus olursunuz boylece. Guzel bir debugging yolu.
 
@Linuxginar çok teşekkür ederim dostum. Sabahtan beri uğraşıyorum desem inanmazsın. Sonunda hatayı gördüm sayende. Sağ olasın. Yeni konu açıp seni etiketleyeceğim dostum. Enter tuşu ile login butonunu çalıştırmak için ne yazmam gerektiği ile alakalı.
 
Konu acmana gerek yok hocam.
Python:
import tkinter
from tkinter import *

from tkinter import messagebox

pencere = Tk()

pencere.title("Min Konto")
pencere.geometry("600x400")


#Giris yapma buton fonksiyonu


username = "8800"
password = "8800"



# Center textim


center_text = Label(pencere, text= 'Logga in:')
center_text.config(font=("Arial", 30, 'bold'))
center_text.grid(padx=220, pady=10)

#Forsta text
def forsta_texten():

    Forsta_text = Label(pencere, text = 'Username:')
    Forsta_text.config(font=("Arial", 10))
    Forsta_text.grid(column=50, row=20)
    Forsta_text.place(x=170, y=77)

#Username yazi bosluk

username1 = tkinter.StringVar(pencere)
password1 = tkinter.StringVar(pencere)
username_alan = Entry(pencere, bd=8,textvariable= username1)
username_alan.grid(padx=110, pady=3)



#Password yazi bosluk

password_alan = Entry(pencere,show='*', bd=8, textvariable=password1)
password_alan.grid(padx=110, pady=3)



print(username1.get())
if username1.get() == username:
    print('Username dogru')
elif password1.get() == password:
    print('Password dogru')
#Andra text
def andra_text():
    Andra_text = Label(pencere, text = 'Password:')
    Andra_text.config(font=("Arial", 10))
    Andra_text.grid(column=50, row=20)
    Andra_text.place(x=170, y=120)



def buton_fonksiyonu(foo):
    if (username1.get() == username and password1.get() == password):
        tkinter.messagebox.showinfo(title='Min Konto', message='Successfully logged in to the account!')

    elif (username1.get() != username) and (password1.get() != password):
        tkinter.messagebox.showerror(title= 'Min Konto', message='Användarnamnet eller lösenordet är felaktigt!')

pencere.bind('<Return>', buton_fonksiyonu)

#Buton1

def buton1 ():
    buton_forsta = tkinter.Button(text= 'Login',height=1,width=20, command= lambda: buton_fonksiyonu())
    buton_forsta.config(font= ('Arial',10, 'bold'))
    buton_forsta.place(x=200,y=175)

andra_text()
forsta_texten()
buton1()
center_text








# formu çiz


pencere.mainloop()

pencere.bind('<Return>', buton_fonksiyonu) gibi bir kod ile yapiliyor. Ancak bu bir parametre verdigi icin hataya sebep oluyordu, foo diye parametre ekledim etrafindan dolasmak icin.

Eger bunu istemezseniz o foo parametresini kaldirip pencere.bind('<Return>', buton_fonksiyonu) kismini pencere.bind("<Return>", (lambda event: buton_fonskiyonu())) yapabilirsiniz.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…