Возвращение значений в графическом интерфейсе - PullRequest
0 голосов
/ 30 мая 2019

Попытка установить графический интерфейс пользователя, при котором пользователь нажимает кнопку, и заданная информация появляется в соответствующих строках и столбцах.

Печать не дает желаемого результата, и я недостаточно хорошо понимаю 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)

Я хочу, чтобы кнопка «Normal» возвращала информацию, необходимую для каждого ярлыка. Затем я буду использовать этот метод для нескольких кнопок.

1 Ответ

0 голосов
/ 01 июня 2019

В tkinter вместо операторов print есть метки. Точно так же, как если вы хотите напечатать переменную print(fred), вы устанавливаете метку для переменной. Вместо ttk.Label(frame, text), ttk.Label(frame, textvariable=variable). Чтобы правильно использовать метку с переменными, необходимо правильно установить переменную. Скажем, я все еще хочу отобразить переменную. Во-первых, прежде чем поместить его в ярлык, его необходимо настроить. Вам нужно настроить его так, чтобы он принимал данные, которые вы собираетесь предоставить. Некоторыми примерами этого являются StringVar (), IntVar (), BooleanVar () и DoubleVar (). В основном они просто заявляют, что данные будут представлять собой строку (StringVar), Integer (IntVar), Boolean (BooleanVar) или число с плавающей точкой (DoubleVar). Скажем, у вас есть данные для 15 грамм углеводов. Это целое число, поэтому вы должны использовать IntVar (). Способ установить все это будет выглядеть следующим образом.

variable = IntVar()
variable.set(carbs)
ttk.Label(frame, textvariable=variable).pack()

В этом примере карбюраторы будут вашим значением с плавающей точкой, которое вводит пользователь, а переменная - это фактическая переменная, которую вы вводите в метку. Надеюсь, это поможет, счастливого кодирования!

Быстрое редактирование: кнопки работают лучше всего, когда вы назначаете им функцию, поэтому я бы предложил настроить функцию для использования значений в нормальном режиме (если это данные, которые вы хотите использовать), взять их и назначить для переменных, которые вы положить в ваши ярлыки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...