Nerde Hata Yapıyorum?

Şu hatayı veriyor. “NameError: name ‘komut’ is not defined” Yardımlarınız için şimdiden teşekkürler.

from tkinter import *

def fonksiyon():
   komut = kutu.get()
print ("Buttona basıldı. Kutudaki giriş : ")
exec ("a = +komut")
yazı2.config(text =str(a))
    
pencere = Tk()
pencere.title("pencere")

yazı = Label(pencere)
yazı.config(text = "HOŞ GELDİNİZ")
yazı.pack()


yazı2 = Label(pencere)
yazı2.config(text = "HENÜZ HİÇ İŞLEM YAPILMADI")
yazı2.pack()

kutu = Entry(pencere)
kutu.pack()

button = Button(pencere)
button.config(text = "HESAPLA", command = fonksiyon)
button.pack()

mainloop()

Sanırım fonksiyon isimli fonksiyonda girintileme yanlışlığı var

def fonksiyon():
    komut = kutu.get()
    print ("Buttona basıldı. Kutudaki giriş : ")
    exec ("a = +komut")
    yazı2.config(text =str(a))

not: alttaki düzeltmeye ek olarak, a is not defined hatası da verecektir. a değişkenine ulaşmak için eval(“a”) kullanabilirsin.

1 Like

Ayrıca yapılmak istenen şey de koda aktarılamamış.
exec ("a = +komut")
Kısmı anlamsız duruyor. Hatta verilen hatanın sebebi de bu olabilir. Sanırım şu yapılmalı:
exec ("a =" + komut)

1 Like

exec fonkiyonunu başka bir fonksiyon içinde kullanırken dikkatli olmalısınız.

>>> def a(text):
	     exec("b="+text)
	     print(b)

>>> a("1")
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    a("1")
  File "<pyshell#3>", line 3, in a
    print(b)
NameError: name 'b' is not defined

Bu şekilde kullanmanız lazım:

def a(text):
	exec("b="+text,locals(),globals())
	print(b)

Tekrar merhaba. Şöyle birşey denedim, hata vermedi ama yine çalışmıyor. Sanırım mantığını tam otutturamadım. :upside_down_face:

from tkinter import *

kutu1 = input('1. Sayı : ')
kutu2 = input('2. Sayı : ')
ortalama=(int(sayi1)+int(sayi2))/2
print("Ortalama :{0} ".format(ortalama))

pencere = Tk()
pencere.title("pencere")

yazı = Label(pencere)
yazı.config(text = "SONUÇ BURDA GÖZÜKMESİ LAZIMDI :(")
yazı.pack()

kutu1 = Entry(pencere)
kutu1.pack()

kutu2 = Entry(pencere)
kutu2.pack()

button = Button(pencere)
button.config(text = "HESAPLA", command = ortalama)
button.pack()

mainloop()

Hata vermediğine emin misiniz?

kutu1 = input('1. Sayı : ')
kutu2 = input('2. Sayı : ')
ortalama=(int(sayi1)+int(sayi2))/2
print("Ortalama :{0} ".format(ortalama))

sayi1 ve sayi2 tanımlanmamış.

from tkinter import *

def SpaceHolder(entry,text):
    entry.delete(0,len(entry.get()))
    entry.insert(0,text)
    entry.text = text
    entry.is_empty = True
    entry.configure(foreground="#5d626b")
    entry.bind("<FocusIn>",lambda enrty=entry: invisibleText(entry))
    entry.bind("<FocusOut>",lambda enrty=entry: visibleText(entry))
    
def visibleText(entry):
    if entry.get() == "":
        entry.configure(foreground="#5d626b")
        entry.insert(0,entry.text)
        entry.is_empty=True
    else:
        entry.is_empty=False
def invisibleText(entry):
    if entry.get() == entry.text and entry.is_empty == True:
        entry.delete(0,len(entry.get()))
        entry.configure(foreground="#000000")


def ortalama():
    try:
        ortalama=(int(kutu1.get())+int(kutu2.get()))/2
    except:
        yazı["text"] = "Geçersiz Giriş."
    else:
        yazı["text"] = str(ortalama)

pencere = Tk()
pencere.geometry("160x150+500+300")
pencere.title("Pencere")
pencere.resizable(False,False)

yazı = Label(pencere)
yazı["text"] = "Henüz hesaplama yapılmadı."
yazı.pack()

kutu1 = Entry(pencere)
kutu1.pack()

kutu2 = Entry(pencere)
kutu2.pack()

Label().pack()

SpaceHolder(kutu1,"1. Sayıyı Giriniz.")
SpaceHolder(kutu2,"2. Sayıyı Giriniz.")

button = Button(pencere)
button.config(text = "Ortalama Al", command = ortalama)
button["borderwidth"] = 1
button["state"] = "active"
button.pack()
1 Like