【问题标题】:How do you replace a label in Tkinter python?你如何替换 Tkinter python 中的标签?
【发布时间】:2013-12-25 13:13:17
【问题描述】:

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

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

【问题讨论】:

    标签: python tkinter converter currency labels


    【解决方案1】:

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

    方法一:使用文本变量

    如果将StringVar与标签相关联,则每当更改StringVar的值时,标签都会自动更新:

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

    方法二:用configure方法更新文本:

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

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

    【讨论】:

    • 嘿伙计,非常感谢您的回答...但正如我所说,我是一个超级新手,您能否编辑我的代码以向我展示您的意思?再次感谢
    猜你喜欢
    • 2020-06-03
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多