Merhaba. Tkinter ile pencere arasında geçiş yapmak istiyorum .geçiş oluyor fakat ikinci penceredeki entry kısmını yukarıya .get() yaptığımda hata alıyorum yardımcı olabilir misiniz?
Merhaba, hoş geldiniz.
Kodu görmeden sadece anlattıklarınızdan yola çıkarak neden hata aldığınızı anlayamayız. Yardım alabilmek için hata aldığınız kodu mümkünse sadeleştirilmiş olarak paylaşmanız gerekiyor. Ayrıca hata çıktısını da paylaşmak sorunun daha hızlı çözülmesini sağlayabilir.
Kodu aşağıda gösterildiği gibi paylaşın lütfen:
```
kod bu çentiklerin arasına yazılmalı.
```
Entry’ye textvariable atamamışsınız. Hata o yüzden olmuştur yanlış bilmiyorsam.
name=StringVar()
isim=Entry(pencere,textvariable=name)
şifreyi de bu şekilde güncelleyin sonra:
name.get()
bu şekilde entryden yazıları çekebilirsiniz.
Bir fonksiyonda tanımladığınız local
bir değişkeni, başka bir fonksiyonda sanki o değişken global
bir değişkenmiş gibi kullanmışsınız. Böyle bir durumda NameError
hatası alırsınız. Yani bir fonksiyon içerisinde tanımlanan bir local
değişken o fonksiyonun dışında tanımsızdır. Bir fonksiyonda tanımlanmış bir değişkeni, başka bir fonksiyona aktarmak için, değişkenin aktarılacağı fonksiyon bir parametre ile bu değişkeni almalı.
pencere2
'de yer alan hesisk
düğmesine tıklandığı zaman, aynı fonksiyonda tanımlanmış olan fıyat
, ıskonto
ve sonucGoster
değişkenlerini, hesapla
isimli bir fonksiyonda kullanmaya çalışıyorsunuz. Ama hesapla
fonksiyonunun içinde bu değişkenler tanımsız oldukları için hata alıyorsunuz.
O halde yapmanız gereken şu:
-
hesisk
düğmesinin yapacağı işlemi,sonucGoster
isimli değişkenden sonra tanımlayın. Ve komutu tanımlarken dehesapla
fonksiyonunda kullanılacak widgetleri, fonksiyona parametre olarak yazın.
sonucGoster=Label(pencere2)
sonucGoster.config(text="Henüz hesaplanmadı",fg="black",bg="light grey",font="None 8")
sonucGoster.grid(row=3,column=1,sticky=W)
hesisk["command"] = lambda: hesapla(fıyat, ıskonto, sonucGoster)
-
hesapla
fonksiyonunu tanımlarken parametre alacak şekilde tanımlayın.
def hesapla(fıyat, ıskonto, sonucGoster):
Ayrıca hesapla
fonksiyonunun son satırında bir str
nesnesi ile bir int
nesnesini toplamaya çalışıyorsunuz. str
nesnesinin değeri "Sonuç:"
, int
nesnesinin değeri de hesaplama sonucunda oluşuyor ve ismi sonuç
olarak yazılmış. Eğer str
nesnelerini birleştirecekseniz (concatenation
), tipi int
olan nesneyi str
'ye çevirmeniz gerekir.
Yani:
sonucGoster.config(text="Sonuç :" + str(sonuç), fg="black",bg="light grey",font="None 8")
Teşekkür ederim.