首页 > 解决方案 > 在图形界面中返回值

问题描述

试图建立一个 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)

我希望“正常”按钮返回每个标签所需的信息。然后,我将对多个按钮使用此方法。

标签: pythontkinter

解决方案


在 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 是您放入标签的实际变量。希望这会有所帮助,快乐的编码!

快速编辑:当您为按钮分配函数时,按钮效果最佳,因此我建议设置一个函数以正常使用值(如果这是您要使用的数据)并将其分配给您放入的变量标签。


推荐阅读