【问题标题】:Tkinter variablesTkinter 变量
【发布时间】:2023-03-22 15:21:01
【问题描述】:

我在 Tkinter 中制作了一个简单的 GUI。(代码如下) 当我按下“获取”按钮时,我会在命令行中从 GUI 获取文本输入。

假设在此示例中,“用户”在“赢得的服务点数”字段中输入 0.5,在“赢得的返回点数”字段中输入 0.7 作为输入。 当我按下“获取”按钮时,我会在命令提示符中显示以下结果

0.5
0.7

我想要实现的是在命令提示符中显示的结果旁边也会显示匹配的“标签”。

回到我的例子,输入 0.5 和 0.7。我想在命令提示符下得到结果。

"Service Points Won" 0.5
"Return Points Won" 0.7

图形用户界面脚本

from Tkinter import *

fields = 'Service Points Won', 'Return Points Won'

def fetch(variables):
    for variable in variables:
        print  "%s" % variable.get()      

def makeform(root, fields):
    lab1= Label(text="Stats", font="Verdana 10 bold")
    form = Frame(root)                              
    left = Frame(form)
    rite = Frame(form)
    lab1.pack(side=TOP)
    form.pack(fill=X) 
    left.pack(side=LEFT)
    rite.pack(side=RIGHT)

    variables = []
    for field in fields:
        lab1= Label()
        lab = Label(left, text=field)
        ent = Entry(rite)
        lab.pack(anchor='w')
        ent.pack(fill=X)
        var = StringVar()
        ent.config(textvariable=var)
        var.set('0.5')
        variables.append(var)
    return variables

if __name__ == '__main__':
    root = Tk()
    vars = makeform(root, fields)
    Button(root, text='Fetch', 
                 command=(lambda v=vars: fetch(v))).pack()
    root.bind('<Return>', (lambda event, v=vars: fetch(v)))   
    root.mainloop()

有什么建议吗?

【问题讨论】:

  • variable 可能比.get() 有更多的方法和属性。也许其他方法或属性之一会给您该字段的名称?或者甚至str(variable) 也能做到这一点?
  • @Evert, str(variable) 不能解决问题。我还可以使用哪些其他方法或属性?
  • print(dir(variable)) 可能会显示很多选项。你可以从尝试最合乎逻辑的开始。文档也可能有所帮助。
  • 您已经告诉我们您想要什么,但实际上并未提出任何问题。您需要帮助解决问题的哪一部分?
  • @Bryan,我确实问了一个问题。关于如何获取输入值标签的建议

标签: python tkinter python-2.x


【解决方案1】:

由于您想将某些字段映射到其他字段,因此使用字典比使用列表更好。

def fetch(variables):
    for key, val in variables.items():
        print key, val.get()

def makeform(root, fields):
    ...
    variables = {}
    for field in fields:
        ...
        variables[field] = var #associate a field with its variable
    return variables

会打印出来的

Service Points Won 0.5
Return Points Won 0.7

请注意,您可以在 fetch 函数中随意设置打印格式。

【讨论】:

    猜你喜欢
    • 2020-12-31
    • 2018-10-26
    • 1970-01-01
    • 2020-01-20
    • 2020-12-05
    • 1970-01-01
    • 2012-07-18
    • 2018-07-01
    • 2015-11-15
    相关资源
    最近更新 更多