Вывести вывод в интерфейс GUI после проверки содержимого словаря - PullRequest
0 голосов
/ 23 сентября 2018

Я создаю интерфейс GUI, который принимает данные от пользователя.во-первых, вес.во-вторых, скорость.

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

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

скажем, у меня есть информация по умолчанию, как показано ниже.

Степень 1: A Сила: 500

Степень 2: BСила: 300

3 класс: C Сила: 100

ПРОБЛЕМА:

Если, например, я ввел, 50 для веса и 100 для скорости, и нажал кнопкупрограмма должна автоматически рассчитать силу на основе этих входных данных.

Если, например, рассчитанная сила была 250 ..., это значение попадает в класс 2: B в словаре по умолчанию.(как я могу перейти к словарю по умолчанию и проверить его, пройтись по всем значениям ключей там, пока моя программа не решит, что значение действительно попадает в эту оценку?)

тогда графический интерфейс должен вывестиокончательный вывод в интерфейсе, в данном случае это GRADE 2: B.

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

Поэтому, пожалуйста, я был бы рад, если бы вы могли помочь.

вот что я сделал до сих пор.

from tkinter import *
from tkinter import ttk

x = []
def cal_acceleration(*args):
    try:
        # 1/2 and 0.4 default value, get the velocity value 
        # from below then multiplied by 1/2.
        acce=((1/2) * ve.get()) / 0.40 
        x.append(acce)
    except ValueError:
        pass

def cal_force(*args):
    try:
        # multiplied the output of this function to the above function.
        force=ma.get() * x
    except ValueError:
        pass
"""Creating a GUI with the following interface."""
root = Tk()
root.title("what type?")

frame = ttk.Frame(root, padding="5 5 5 5")
frame.grid(column=0, row=0, sticky=(N,S,E,W)) # stick frame to center.

ma = StringVar() # allocate user input weight
v = StringVar() # allocate user input speed

ma_entry = ttk.Entry(frame, width=7,textvariable=m) # entry dialogue for weight
ma_entry.grid(column=1,row=0,sticky=(W,E))

ve_entry = ttk.Entry(frame, width=7, textvariable=v) # entry dialogue for speed
ve_entry.grid(column=1,row=1,sticky=(W,E))

ma_label = ttk.Label(frame, text="how heavy:") # labelling weight
ma_label.grid(column=0, row=0,sticky=E)

velo_label = ttk.Label(frame, text="speed:") # labelling speed
velo_label.grid(column=0, row=1,sticky=E)

# setting the button for GUI. combining two functions using lambda.
find_button = ttk.Button(frame, text="Find", command=lambda[cal_acceleration(),cal_force()])
find_button.grid(column=2,row=0,sticky=W)

root.mainloop()

большое спасибо.

1 Ответ

0 голосов
/ 24 сентября 2018

Первым шагом будет исправление существующего кода.Как и сейчас, он не работает по нескольким причинам, объясненным ниже, что заставляет меня думать, что вы не проверяли его (в последнее время).

Лямбда-вызов не имеет ":" к нему, предотвращая вызовваши функции.

Проверьте имена переменных, это "v" или "ve" и это "m" или "ma"?

Отладка вашей функции вычисления для работы (она не't).

подсказка: ваши данные должны быть правильного типа.у вас есть Int, он хочет Float.

подсказка: как вы думаете, умножение списка работает?

Тогда пусть он сначала напечатает ваши данные.Когда вы знаете, что это ожидаемый результат, вы можете начать работу над отображением в графическом интерфейсе.

...