Saya melakukan aplikasi yang sangat sederhana untuk menghitung biaya, dan saya ingin memiliki Radiobutton di mana saya dapat memilih mata uang.

Saya bertanya-tanya apa masalahnya di sini, karena dengan kondisi pertama (Jalankan dalam EUR), semuanya berjalan dengan baik, tetapi jika ada kondisi kedua, saya mendapat masalah:

 File "C:\Users\Iker\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)   File "C:\Users\Iker\eclipse-workspace\Prueba2\Prueba2.py", line 128, in <lambda>
    Button_1 = Button(root, text="Calcular", padx=20, pady=10, command=lambda:calcular(Moneda.get()))   File "C:\Users\Iker\eclipse-workspace\Prueba2\Prueba2.py", line 71, in calcular
    Beneficio_Bruto_EUR = Label(root, width=20, borderwidth=5, text="%.2f€"%Beneficio_Bruto/d) TypeError: unsupported operand type(s) for /: 'str' and 'float'

Saya benar-benar tidak mengerti, karena jika ada masalah mendefinisikan variabel, bukankah seharusnya di if dan else sama?

def calcular(Moneda):
    a=float(Precio_de_venta.get())
    b=float(Portes.get())
    c=float(Precio_de_compra.get())
    d=float(1.04)

    #Beneficio Bruto
    Beneficio_Bruto=a-c-b-(a*0.1)-((a*0.029)+0.35)
    Beneficio_Brutolbl=Label(root, text="Beneficio Bruto")
    Beneficio_Brutolbl.grid(row=3, column=0)
    if Moneda == 0:
        Beneficio_Bruto_EUR = Label(root, width=20, borderwidth=5, text="%.2f€"%Beneficio_Bruto)
        Beneficio_Bruto_EUR.grid(row=3, column=1)
        Beneficio_Bruto_USD = Label(root, width=10, borderwidth=5, text="%.2f USD"%(Beneficio_Bruto*d))
        Beneficio_Bruto_USD.grid(row=3, column=2)
    elif Moneda == 1:
        Beneficio_Bruto_EUR = Label(root, width=20, borderwidth=5, text="%.2f€"%Beneficio_Bruto/d)
        Beneficio_Bruto_EUR.grid(row=3, column=2)
        Beneficio_Bruto_USD = Label(root, width=10, borderwidth=5, text="%.2f USD"%(Beneficio_Bruto))
        Beneficio_Bruto_USD.grid(row=3, column=1)
0
unkim 29 Februari 2020, 11:44

1 menjawab

Jawaban Terbaik

Anda kehilangan tanda kurung:

Beneficio_Bruto_EUR = Label(root, width=20, borderwidth=5,
                            text="%.2f€" % (Beneficio_Bruto/d))

Pemformatan string selalu diterapkan sebelum operasi:

>>> '%d' % (4 * 2)
'8'
>>> '%d' % 4 * 2
'44' 
>>> '%d' % (4 / 2)
'2'
>>> '%d' % 4 / 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'str' and 'int'
0
BlackBear 29 Februari 2020, 08:47