【问题标题】:How to make entries from an entry widget interact with each other如何使条目小部件中的条目相互交互
【发布时间】:2014-11-18 22:26:04
【问题描述】:

我正在尝试制作一个程序,允许用户输入货币和美元金额,并让程序运行转换,当然向用户显示结果。我正在使用 tkinter 并弹出一个 gui,用户可以在其中输入值,到目前为止,它只打印用户在 IDLE 窗口中输入的任何内容(以测试我所拥有的是否会做任何事情)。

from tkinter import *
from math import *
fields = 'Dollars' , 'Currency'
def fetch(entries):
    for entry in entries:
        field = entry[0]
        text = entry[1].get()
        print('%s: "%s"' % (field, text))


def makeform(root, fields):
    entries = []
    for field in fields:
        row = Frame(root)
        lab = Label(row, width = 15, text = field, anchor = 'w')
        ent = Entry(row)
        row.pack(side = TOP, fill = X, padx=5, pady = 5)
        lab.pack(side = LEFT)
        ent.pack(side = RIGHT, expand = YES, fill = X)
        entries.append((field, ent))
    return entries

if __name__ == '__main__':
    root = Tk()
    ents = makeform(root, fields)
    root.bind('<Return>', (lambda event, e = ents: fetch(e)))
    b1 = Button(root, text = 'Show', command = (lambda e=ents: fetch(e)))
    b1.pack(side = LEFT, padx = 5, pady =5)
    b2 = Button(root, text = 'Quit', command=root.quit)
    b2.pack(side = LEFT, padx = 5, pady = 5)
    root.mainloop()

我用来转换货币的唯一代码是这样的:

def convert():
    option = input("Please enter what you would like to convert $ to; Yen, Euros, or Pesos: ")
    dollars = eval(input("Please enter the dollar amount you wish to convert: "))
    if dollars < 0:
        print("You must enter a value greater than 0.")
        convert()
    elif option == "Yen":
        print("The amount of Yen you have is: ", dollars * 106.84)
    elif option == "Euros":
        print("The amount of Euros you have is: ", dollars * 0.77)
    elif option == "Pesos":
        print("The amount of Pesos you have is: ", dollars * 13.38)

我浏览了许多网站,但在任何地方都没有找到任何有用的信息来说明如何将两者结合在一起。如果有人可以帮助我了解我需要做什么,将不胜感激。

【问题讨论】:

    标签: python tkinter widget


    【解决方案1】:

    改写问题:如何根据另一个Entry的值更新on Entry的值? 这似乎需要如下代码:

    value=eval(entryDollar.get())
    entryCurrency.delete(0,END)
    entryCurrency.insert(0,repr(value*exchangeRate))
    

    在您当前与 Show 的绑定中,&lt;Return&gt; 不清楚您要转换的方向;方向指示器可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-05-07
      • 2019-03-10
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      相关资源
      最近更新 更多