Python Tkinter Использование валюты - PullRequest
0 голосов
/ 04 сентября 2018

В Python 3.5.2, Tkinter, я создаю базовую систему «меню», в которой можно было бы заказать что-то из меню, а затем внизу будет создан счет, основанный на цене того, что они заказали. Вот код на данный момент:

from tkinter import *
root = Tk()
root.geometry("500x500")
text1 = Label(root, text="Menu", font='Verdana, 15')
text1.pack()
coststr = StringVar()
cost = 0
coststr.set(str(cost))
menu = ["Burger", "Chips", "Milkshake"]
textln = Label(root, text="\n")
textln.pack()

def choiceburger():
    global cost
    global coststr
    cost += 1.99
    coststr.set(str(cost))

def choicechips():
    global cost
    global coststr
    cost += 1.49
    coststr.set(str(cost))

def choicemilkshake():
    global cost
    global coststr
    cost += 0.99
    coststr.set(str(cost))




burgerbutton = Button(root, text="    Burger   £1.99     ", command=choiceburger)
burgerbutton.pack()
chipsbutton = Button(root, text="    Chips   £1.49       ", command=choicechips)
chipsbutton.pack()
milksbutton = Button(root, text="  Milkshake   £0.99 ", command=choicemilkshake)
milksbutton.pack()

textln = Label(root, text="\n")
textln.pack()
textln = Label(root, text="\n")
textln.pack()
textln = Label(root, text="\n")
textln.pack()
textln = Label(root, text="\n")
textln.pack()
textln = Label(root, text="\n")
textln.pack()

costlabel = Label(root, textvariable=coststr, font='Verdana, 15')
costlabel.pack()

Как видите, после нажатия кнопки число сохраняется внизу, но без знака валюты (£ или $). Поскольку я сделал textvariable=coststr, я не могу отредактировать ярлык, чтобы поставить знак £ или $ перед стоимостью. Есть какой-либо способ сделать это? Это уже определено в python? Спасибо

1 Ответ

0 голосов
/ 04 сентября 2018

Вам необходимо включить символ валюты в настройку переменной label:

conststr.set(str(cost) + "£")      # as suggested by @tobias_k in the comments

Для этого вы можете использовать строку f для форматирования coststr.set(str(cost)):

заменить на

coststr.set(f'{cost} {currency_symbol}')

Где currency_symbol - символ вашей валюты.

Относительно вашего редактирования: вы можете использовать тип decimal.Decimal, чтобы избежать неточности с плавающей точкой.

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