初学者python(Tkinter)-如何要求汇率进行货币兑换?

初学者python(Tkinter)-如何要求汇率进行货币兑换?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我是一个编程初学者,如果代码混乱或太长,我很抱歉。 我的问题是:我被利率输入卡住了,如何把所有的东西放在一起,使转换工作 多谢各位 from tkinter import * def convertDtoE(): fromDtoE=fromDtoEVar fromDtoEVar.get() fromEtoD=fromEtoDVar fromEtoDVar.get() fromDtoEVar.set(fromEtoD) def convertEtoD(

我是一个编程初学者,如果代码混乱或太长,我很抱歉。 我的问题是:我被利率输入卡住了,如何把所有的东西放在一起,使转换工作

多谢各位

from tkinter import *

def convertDtoE():

    fromDtoE=fromDtoEVar
    fromDtoEVar.get()
    fromEtoD=fromEtoDVar
    fromEtoDVar.get()

    fromDtoEVar.set(fromEtoD)
def convertEtoD():

    fromDtoE=fromDtoEVar
    fromDtoEVar.get()
    fromEtoD=fromEtoDVar
    fromEtoDVar.get()

    fromEtoDVar.set(fromDtoE)
def main():
    window=Tk()

    global fromDtoEVar
    fromDtoEVar=DoubleVar()

    fromDtoEVar.set(0.0)

    global fromEtoDVar
    fromEtoDVar=DoubleVar()

    fromEtoDVar.set(0.0)

    aa=Label(window,text="Dollars")
    aa.pack()
    a=Entry(window,textvariable=fromDtoEVar)
    a.pack()
    rr=Label(window,text="Rate")
    rr.pack()
    rate=Entry(window)
    rate.pack()
    bb=Label(window,text="Euros")
    bb.pack()
    b=Entry(window,textvariable=fromEtoDVar)
    b.pack()
    c=Button(window, text="Convert Euros", command=convertEtoD)
    c.pack()
    d=Button(window, text="Convert Dollars", command=convertDtoE)
    d.pack()
    window.mainloop()
    main()

我不确定您到底在问什么,但您的代码有一个非常大的问题,您需要重复多次,因此我假设这就是您想要修复的问题:

fromDtoE=fromDtoEVar
fromDtoEVar.get()
这没有任何用处。它返回DoubleVar的当前值,然后忽略该值。同时,您将另一个名称绑定到
DoubleVar
本身,但随后使用了原始名称。我想你想要的是:

fromDtoE=fromDtoEVar.get()
现在,至少,您将实际复制周围的数字,而不是像
PY\u VAR0
这样的Tk变量的字符串表示


你仍然没有做任何转换,只是来回复制数字。要解决这个问题,首先需要实际访问Rate小部件中的值。你可以用与其他两个小部件相同的方法攻击一个
DoubleVar
,用同样的方法访问它的值,然后只做数学运算。

请修正你的行缩进,也请修正明显随机的换行符,以及第一个
fromDtoEVar.set
行中的
*
等散乱字符。作为旁注,为变量指定有意义的名称,而不是
a
aa
,确实很有帮助。(或者,如果您没有任何理由保留它们,请不要给它们命名,只要
条目(window,textvariable=fromDtoEVar).pack()
)我刚刚编辑了代码。抱歉,我只是一个初学者,我试图理解的是:如何在代码中加入公式,使用汇率(用户输入)计算和转换货币@Alfiebrown:您必须以与获取其他两个值相同的方式获取汇率值,然后您可以编写代码进行转换(
fromDtoE=fromEtoD/rate
…或者那是
*rate
?我不确定你的应用程序应该走哪条路…),就在你的
set
调用之前(
fromDtoEVar.set(fromDtoE)
),所以它最终使用了计算结果。非常有用的评论。谢谢。