Когда я запускаю команду, decimal не печатается Python tkinter - PullRequest
2 голосов
/ 16 июня 2020
from tkinter import *
from functools import partial
wn=Tk()
wn.geometry("400x200")
wn.configure(bg='green')


def add(r,a,b,y):
    a=(a.get())# input("first number:=")
    b=(b.get())#input("\nsecond number:=")
    y=(y.get())
    c=float(a)*float(b)*float(y)/100
    r.config(text="Result = %d" % c)
    return
#print("the sum of numbers=",format(c))


l=Label(wn,text="Simple Interest",border=0).grid(row=1,column=2)
l2=Label(wn,text="Enter principal amount",border=0).grid(row=2,column=1)
l3=Label(wn,text="rate of Interest",border=0).grid(row=3,column=1)
l4=Label(wn,text="Enter no. of year",border=0).grid(row=4,column=1)
r =Label(wn)
r.grid(row=7, column=2)

number1 =StringVar()
number2 =StringVar()
number3 =StringVar()

Num1 = Entry(wn, textvariable=number1).grid(row=2, column=2)
Num2 = Entry(wn, textvariable=number2).grid(row=3, column=2)
Num2 = Entry(wn, textvariable=number3).grid(row=4, column=2)

add = partial(add,r, number1, number2,number3)
but_r= Button(wn, text="Calculate", command=add).grid(row=5, column=1)
wn.mainloop()

Когда я передаю значение 5 во всех местах, ответ должен быть 1,25, но он показывает 1.

Я много пробовал, но не получил решения, поэтому пожалуйста, помогите мне решить эту проблему

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Небольшая ошибка, в r.config измените %d на %f, и это даст значение с плавающей запятой:

from tkinter import *
from functools import partial
wn=Tk()
wn.geometry("400x200")
wn.configure(bg='green')


def add(r,a,b,y):
    a=(a.get())# input("first number:=")
    b=(b.get())#input("\nsecond number:=")
    y=(y.get())
    c=float(a)*float(b)*float(y)/100
    r.config(text="Result = %f" % c)
    return
#print("the sum of numbers=",format(c))


l=Label(wn,text="Simple Interest",border=0).grid(row=1,column=2)
l2=Label(wn,text="Enter principal amount",border=0).grid(row=2,column=1)
l3=Label(wn,text="rate of Interest",border=0).grid(row=3,column=1)
l4=Label(wn,text="Enter no. of year",border=0).grid(row=4,column=1)
r =Label(wn)
r.grid(row=7, column=2)

number1 =StringVar()
number2 =StringVar()
number3 =StringVar()

Num1 = Entry(wn, textvariable=number1).grid(row=2, column=2)
Num2 = Entry(wn, textvariable=number2).grid(row=3, column=2)
Num2 = Entry(wn, textvariable=number3).grid(row=4, column=2)

add = partial(add,r, number1, number2,number3)
but_r= Button(wn, text="Calculate", command=add).grid(row=5, column=1)
wn.mainloop()

Приведенный выше код напечатает что-то вроде 1.250000. Если вы хотите получить точные 2 десятичные точки, например 1.25, используйте:

r.config(text="Result =" + str(round(c, 2)))

Надеюсь, это поможет :)

0 голосов
/ 16 июня 2020

также измените свою функцию добавления -

def add(r,a,b,y):
    a=(a.get())# input("first number:=")
    b=(b.get())#input("\nsecond number:=")
    y=(y.get())
    c=float(a)*float(b)*float(y)/100
    r.config(text="Result = %.3f" %c)
    return

%f для чисел с плавающей запятой и %.3f ограничивает его до 3 знаков после запятой, что немного чище, чем значение по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...