Pyhton kodum çalışmıyor

import tkinter as tk

arayüz = tk.Tk()

arayüz.title("Anket Desteklenme")

arayüz.geometry("300x**güçlü metin**200")

desteklenme = tk.Label(text="Desteklenme Miktarı:")

desteklenme.place(x=20,y=20)

y = tk.StringVar()

desteklenme_girisi = tk.Entry(textvariable=y)

desteklenme_girisi.place(x=143,y=20)

desteklenmeme = tk.Label(text="Desteklenmeme Miktarı:")

desteklenmeme.place(x=10,y=40)

x = tk.StringVar()

desteklenmeme_girisi = tk.Entry(textvariable=x)

desteklenmeme_girisi.place(x=143,y=40)

def giris_komut():

  deslm = y.get()

  dlmm = x.get()

  rating = y / (deslm + dlmm)

  rating_yuzde = rating * 100

  print("Bu anketin desteklenme oranı: %", rating_yuzde)

  print(deslm,"\n",dlmm)



  if (rating_yuzde > 90):

      print("Bu anket çok desteklendi")



  elif (rating_yuzde > 50):

      print("Bu anket beğenildi")

  elif (rating_yuzde > 30):

      print("Bu anket beğenilmedi")

  else:

      print("Bu anketten nefret edildi")

giris = tk.Button(text="Giriş",command=giris_komut)

giris.place(x=234,y=60)

arayüz.mainloop()

böyle kod yazdım çalışmıyor

şu hatayı veriyor

Exception in Tkinter callback
Traceback (most recent call last):
File "c:\Users\Gulduren\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py",         
line 1892, in __call__
return self.func(*args)
File "C:\Users\Gulduren\AppData\Local\Temp\ipykernel_5660\1296768705.py", line 24, in 
giris_komut
rating = y / (deslm + dlmm)
TypeError: unsupported operand type(s) for /: 'StringVar' and 'str'

lütfen yardım edin
#pyhton

Kodunuzu ctrl+e içinde atar mısınız.

@makalidap bu şekildemi

Evet ama kodun asıl kaynağından kopyalayıp yapıştırır mısınız. Başka bir yerden kopyaladınız şimdi sanırım o yüzden bazı yerler değişmiş örn. bu arayüz.geometry("300x200") buarayüz.geometry("300x**güçlü metin**200") olmuş.

@makalidap

import tkinter as tk

arayüz = tk.Tk()
arayüz.title("Anket Desteklenme")
arayüz.geometry("300x200")

desteklenme = tk.Label(text="Desteklenme Miktarı:")
desteklenme.place(x=20,y=20)

y = tk.StringVar()
desteklenme_girisi = tk.Entry(textvariable=y)
desteklenme_girisi.place(x=143,y=20)

desteklenmeme = tk.Label(text="Desteklenmeme Miktarı:")
desteklenmeme.place(x=10,y=40)

x = tk.StringVar()
desteklenmeme_girisi = tk.Entry(textvariable=x)
desteklenmeme_girisi.place(x=143,y=40)

def giris_komut():
    deslm = y.get()
    dlmm = x.get()
    rating = y / (deslm + dlmm)
    rating_yuzde = rating * 100
    print("Bu anketin desteklenme oranı: %", rating_yuzde)
    print(deslm,"\n",dlmm)
    
    if (rating_yuzde > 90):
        print("Bu anket çok desteklendi")
   
    elif (rating_yuzde > 50):
        print("Bu anket beğenildi")

    elif (rating_yuzde > 30):
        print("Bu anket beğenilmedi")

    else: 
        print("Bu anketten nefret edildi")

giris = tk.Button(text="Giriş",command=giris_komut)
giris.place(x=234,y=60)

arayüz.mainloop()

bu saçmalığı nasıl fark edemediniz merak ettim ?

@BandoLero hangisi valla hiç görmedim

iyi de gene hata var kodda :smiley:

    rating = y / (deslm + dlmm)

y bir tkinter objesi y’yi bir şeye nasıl bölebilirsiniz ki y’nin değerini bir şeye bölmeniz gerekir. ve deslm, dlmn değerlerini de inte çevirmeniz gerekir.

işte bende bu yüzden yardım istiyorum

onu bende anladım ama daha pyhtonda yeniyim bu yüzden nasıl inte çevireceğimi felan hiç bir şey bilmiyorum

Hata veren satirdaki degiskenlerin turlerine bakarsaniz StringVar, str ve str olduklarini gorebilirsiniz.

Sayi olmalarini beklediginize gore float gibi bir fonksiyon ile sayiya cevirmeniz gerekecektir.

1 Beğeni

Yani o kısmı böyle

    deslm = int(y.get())
    dlmm = int(x.get())
    rating =  deslm/ (deslm + dlmm)

yada

    deslm = float(y.get())
    dlmm = float(x.get())
    rating =  deslm/ (deslm + dlmm)

böyle yapmanız gerekir.

sağolun @aib 'in dediğide oluyor seninkide çok teşekkürler