在图形界面中返回值

时间:2019-05-30 05:19:55

标签: python tkinter

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

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

1 个答案:

答案 0 :(得分:0)

在tkinter中,没有打印语句,而是有标签。就像您要打印变量print(fred)一样,您可以将Label设置为变量。拥有ttk.Label(frame, text)而不是拥有ttk.Label(frame, textvariable=variable)。 为了正确使用带有变量的标签,您需要正确设置变量。说我仍然要显示变量。首先,在将其放入标签之前,需要对其进行设置。您需要对其进行设置,以接受将要提供的数据类型。这样的一些示例是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是您在标签中输入的实际变量。希望这对您有所帮助,编码愉快!

快速编辑:向按钮分配功能时,按钮最有效,因此,我建议设置一个功能以使用常规值(如果要使用的数据)并将其分配给您要使用的变量放入您的标签中。