2013-12-08 75 views
0

我是一个新手程序员,我正在制作一个货币转换器....它仍在进行中,但任何人都可以帮助我尝试替换'def convert()'中制作的标签...要清楚,现在每次我转换,一个新的标签底下弹出,但我希望发生的是,我的标签被替换每次我点击转换...如何替换Tkinter python中的标签?

import sys 
from Tkinter import * 

root = Tk() 
root.title("CURRENCY CONVERTER") 
root.geometry('600x300+30+100') 
root.config(bg="#000000") 

#*************************************GBP*************************************# 
def rate(): 
    rate = 1 
    if var.get() =='GBP' and var2.get() =='USD': 
     rate=float(1.63452) 
    if var.get() =='GBP' and var2.get() =='EUR': 
     rate=float(1.19529) 
    if var.get() =='GBP' and var2.get() =='INR': 
     rate=float(99.9639) 
    if var.get() =='GBP' and var2.get() =='AUD': 
     rate=float(1.79578) 
    if var.get() =='GBP' and var2.get() =='CAD': 
     rate=float(16.8796) 
    if var.get() =='GBP' and var2.get() =='NZD': 
     rate=float(1.97334) 
    if var.get() =='GBP' and var2.get() =='JPY': 
     rate=float(168.143) 
    if var.get() =='GBP' and var2.get() =='CNY': 
     rate=float(9.93698) 
#*************************************USD*************************************# 
    if var.get() =='USD' and var2.get() =='GBP': 
     rate=float() 
##to do ....ADD MORE 

    return rate 
#----------------------------------HELP------------------------------# 
def convert(): 
    converted=Label(root, text=(var.get(), int(entarr.get()),">>>", round((float(entarr.get())*rate()),3), var2.get())) 
    converted.config(font=('century gothic',(15)),bg='#000000',fg="white",width=0, relief=FLAT) 
    converted.pack(expand = 1,anchor="center") 
    return 
#--------------------------------HELP--------------------------------# 


#title 
Title=Label(root, text="Currency Converter", cursor="heart") 
Title.config(font=('century gothic',(35)),bg='#fff60b', fg="#9c0200",width=0,relief=RAISED) 
Title.pack(expand=1, anchor=CENTER) 

#entry box 
entarr = DoubleVar() 
entarr.set(0) 
entry = Entry(root, textvariable=entarr, cursor="plus") 
entry.config(font=('century gothic',(15)),bg='#ff6100',width=0, relief=SOLID) 
entry.pack(expand = 1, anchor="center") 

#currency 1 
var = StringVar(root) 
var.set('Choose a currency to convert from') 
choices = ['GBP', 'USD', 'EUR','INR','AUD','CAD','NZD','JPY','CNY'] 
option = OptionMenu(root, var, *choices) 
option.config(font=('century gothic',(15)),bg='#fff60b',fg="#9c0200",activebackground='#00ff80',width=0, cursor="", relief=FLAT) 
option.pack(ipadx=10,ipady=0, expand=1,anchor="center") 

#convert button 
Arrow= Button(root, text=">>>>CONVERT>>>>", command = convert, cursor="exchange") 
Arrow.config(font=('century gothic',(15)),width=0, bg="#ff6100", relief=SOLID) 
Arrow.pack(ipadx=1,ipady=0, expand =1, anchor="center") 

#currency 2 
var2 = StringVar(root) 
var2.set('Choose a currency to convert to') 
choices2 = ['GBP', 'USD', 'EUR','INR','AUD','CAD','NZD','JPY','CNY'] 
option2 = OptionMenu(root, var2, *choices2) 
option2.config(font=('century gothic',(15)),bg='#fff60b',fg="#9c0200",activebackground='#00ff80',width=0, relief=FLAT) 
option2.pack(ipadx=10,ipady=0, expand=1,anchor="center") 

root.mainloop() 

编辑:

这么糊涂请帮我。我不知道,这里超级菜鸟!

def convert(): 
     newValue=(var.get(), int(entarr.get()),">>>", round((float(entarr.get())*rate()),3), var2.get()) 
     converted=Label(root, textvariable=newValue) 
     converted.config(font=('century gothic',(15)),bg='#000000',fg="white",width=0, relief=FLAT) 
     converted.config(text=newValue) 
     converted.pack(expand = 1,anchor="center") 
     return 

回答

1

有几个简单的方法可以实现这一点。在这两种情况下,都需要创建一个标签,一次,然后动态更改显示的文本。

方法1:使用textvariable

如果您关联的标签,只要你改变STRINGVAR的价值StringVar,标签将自动更新:

labelVar = StringVar() 
label = Label(..., textvariable=labelVar) 
... 
# label is automatically updated by this statement: 
labelVar.set(newValue) 

方法2:用configure方法更新文字:

label = Label(...) 
... 
# update the label with the configure method: 
label.configure(text=newValue) 

在这两种情况下,您都需要确保您要更改的对象(widget或StringVar)是全局变量或实例变量,以便您稍后可以在代码中访问它。

+0

嗨,非常感谢你回答......但正如我所说,我是一个超级新手,你能编辑我的代码,告诉我你的意思吗?再次感谢 –