Tkinter 变量
Tkinter variables
我用Tkinter做了一个简单的GUI。(代码在下面)
当我按下 "Fetch" 按钮时,我在命令行中从 GUI 获得了文本输入。
假设在此示例中,"user" 在 "Service Points Won" 字段中输入 0.5,在“Return Points Won”字段中输入 0.7 作为输入。
当我按下 "Fetch" 按钮时,我在命令提示符
中显示以下结果
0.5
0.7
我想要实现的是,在命令提示符中显示的结果旁边还会显示匹配的 "Label"。
因此 return 我的示例使用 0.5 和 0.7 作为输入。我想在命令提示符中得到如下结果。
"Service Points Won" 0.5
"Return Points Won" 0.7
GUI Script
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()
有什么建议吗?
由于您想将某些字段映射到其他字段,因此使用字典是比使用列表更好的选择。
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
函数中设置打印格式。
我用Tkinter做了一个简单的GUI。(代码在下面) 当我按下 "Fetch" 按钮时,我在命令行中从 GUI 获得了文本输入。
假设在此示例中,"user" 在 "Service Points Won" 字段中输入 0.5,在“Return Points Won”字段中输入 0.7 作为输入。 当我按下 "Fetch" 按钮时,我在命令提示符
中显示以下结果0.5
0.7
我想要实现的是,在命令提示符中显示的结果旁边还会显示匹配的 "Label"。
因此 return 我的示例使用 0.5 和 0.7 作为输入。我想在命令提示符中得到如下结果。
"Service Points Won" 0.5
"Return Points Won" 0.7
GUI Script
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()
有什么建议吗?
由于您想将某些字段映射到其他字段,因此使用字典是比使用列表更好的选择。
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
函数中设置打印格式。