python - 在图形界面中返回值
问题描述
试图建立一个 GUI,用户单击一个按钮并设置信息出现在相关的行和列中。
打印没有达到预期的结果,而且我对 GUI 的理解还不够好,无法尝试其他事情。我是一个菜鸟,所以我很迷茫。
normal = {'Protein' : {'32.50'},
'Carbohydrates' : {'60'},
'Fat' : {'40.86'}}
from tkinter import *
from tkinter import ttk
root = Tk()
root.title('Diet Information')
frame = ttk.Frame(root, padding='150 150 300 300')
frame.grid(column=0, row=0, sticky=(N, W, E, S))
frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1)
d_label = ttk.Label(frame, text='Selected diet: ')
d_label.grid(column=1, row=3, sticky=W)
p_label = ttk.Label(frame, text='Protein (g): ')
p_label.grid(column=1, row=4, sticky=W)
c_label = ttk.Label(frame, text='Carbohydrates (g): ')
c_label.grid(column=1, row=5, sticky=W)
f_label = ttk.Label(frame, text='Fat (g): ')
f_label.grid(column=1, row=6, sticky=W)
k_label = ttk.Label(frame, text='Kilojoules (kJ): ')
k_label.grid(column=1, row=7, sticky=W)
s_label = ttk.Label(frame, text='Select a diet to display:')
s_label.grid(column=3, row=8, sticky=W)
n_button = ttk.Button(frame, text='Normal', command=print(normal))
n_button.grid(column=3, row=9, sticky=W)
我希望“正常”按钮返回每个标签所需的信息。然后,我将对多个按钮使用此方法。
解决方案
在 tkinter 中,有标签而不是打印语句。就像如果你想打印一个变量print(fred)
,你将一个标签设置为一个变量。与其拥有ttk.Label(frame, text)
,不如拥有ttk.Label(frame, textvariable=variable)
。为了正确使用带有变量的标签,您需要正确设置变量。说我仍然想显示变量。首先,在放入Label之前,需要进行设置。您需要对其进行设置以接收您要提供的数据类型。这方面的一些例子是 StringVar()、IntVar()、BooleanVar() 和 DoubleVar()。他们基本上只是声明数据将是字符串 (StringVar)、Integer(IntVar)、Boolean(BooleanVar) 或 float(DoubleVar)。假设您有 15 克碳水化合物的数据。那是一个整数,所以你会使用 IntVar()。设置它的方法如下所示。
variable = IntVar()
variable.set(carbs)
ttk.Label(frame, textvariable=variable).pack()
在此示例中,carbs 将是用户输入的浮点值,variable 是您放入标签的实际变量。希望这会有所帮助,快乐的编码!
快速编辑:当您为按钮分配函数时,按钮效果最佳,因此我建议设置一个函数以正常使用值(如果这是您要使用的数据)并将其分配给您放入的变量标签。
推荐阅读
- r - 使用 fct_infreq() 按频率排列带有字符的多列
- javascript - 如何在 React 表单中传递道具
- excel - 如何根据范围动态更改数字格式?
- spring-boot - 无法使用 @GeneratedValue(IDENTITY) 和双向 @OneToMany 将对象保存到数据库
- django - 在 head 标签内渲染 django-recaptcha 的脚本标签
- node.js - 在 WSL Ubuntu 20.04 上安装 npm 后,我收到消息“/usr/bin/env: 'bash\r': No such file or directory”
- postgresql - 在 JOOQ 的 IN 子句中使用 Postgres VALUES 函数
- unity3d - unity 2021 无法创建单个 Tile 或可以但文档让我感到困惑
- c# - 强制规范流测试失败
- javascript - 使用 ThreeJS 进行世界旋转