【问题标题】:Python Tkinter Currency Calculator Float Multiplied by RadioButton varPython Tkinter 货币计算器浮点数乘以 RadioButton var
【发布时间】:2016-08-27 00:19:10
【问题描述】:

我正在制作货币转换器,但在尝试返回一个值(来自单选按钮)乘以用户输入时收到问题。 toNZD 和 fromNZD 是从下拉菜单中触发的,这将很快更改。感谢任何人的意见。

from tkinter import *
mGui = Tk()

number=0
currency=StringVar()
tester=0

def fromNZD():
    global tester
    currencySelect=currency.get()
    if currencySelect ==1:
        tester = 0.4 #eg's
    elif currencySelect ==2:
        tester= 1.2 #eg's

    userInput=number.get()
    final=(float(userInput)*(tester))#<-------
    mlabel2=Label(mGui,text='${0:.2f}!'.format(final)).pack()


def toNZD():
    userInput2=number.get()
    userInput2=(float(userInput2)/0.6)
    mlabel3=Label(mGui,text='${0:.2f}!'.format(userInput2)).pack()

def terminate():
    global mGui
    mGui.destroy()


menu = Menu(mGui)
mGui.config(menu=menu)

tofrom = StringVar(mGui)
tofrom.set("To") #initial value

subMenu = Menu(menu)
menu.add_cascade(label="Currency Settings", menu=subMenu)
subMenu.add_command(label="From NZD", command=fromNZD)
subMenu.add_separator()
subMenu.add_command(label="To NZD", command=toNZD)

editMenu = Menu(menu)
menu.add_cascade(label="Options", menu=editMenu)
editMenu.add_command(label="Exit", command=terminate)

mlabel = Label(text='Currency Calculator',bg="orange red", fg='gray20',font=("Century Gothic",20))
mlabel.pack(fill=X)

Radiobutton(mGui, text="GBP", variable=currency, value=1, indicatoron=0).pack()
Radiobutton(mGui, text="USD", variable=currency, value=2, indicatoron=0).pack()


number=Entry(mGui,textvariable=number)
number.pack(pady=8)

mGui.configure(background='deepskyblue3')
mGui.geometry('450x450+500+300')
mGui.title('Currency Converter')
mGui.mainloop()

【问题讨论】:

  • “我正在制作货币转换器并收到问题” - 您收到了哪些问题?你有错误吗?什么错误?
  • 代码似乎有效。有什么问题?
  • 抱歉,我没有收到任何错误,但是当我尝试从新西兰元兑换货币时,它会返回 0.00 美元。我希望它输出乘以测试仪的输入 ~ 0.4 或 1.2。
  • 我正在谈论的内容的打印屏幕:prntscr.com/azndn6 为误导性标题道歉。

标签: python variables tkinter floating-point radio-button


【解决方案1】:

currency 是一个StringVar(),所以currency.get() 返回一个string。您正在尝试将 currencySelectfromNZD() 方法中的整数(1 或 2)进行比较。因此,两个比较都失败了,tester 变量没有改变(仍然是 0),因为tester = 0,乘法结果为 0。

您可以将currency.get() 转换为整数

currencySelect= int(currency.get())

或将currencySelect 与字符串值("1""2" 等)进行比较。

currencySelect=currency.get()
    if currencySelect == "1":
        tester = 0.4 #eg's
    elif currencySelect == "2":
        tester= 1.2 #eg's

另外,最好包含else 声明,以防万一出现问题。也许打印错误或弹出消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2018-11-12
    • 2015-05-23
    相关资源
    最近更新 更多