Запуск функции в Python, если пользователь выбирает ее (EasyGui)

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

from easygui import *
import emdtest1
import emdtest2
import emdtest3

EMDTestsDict = {"emdtest1":emdtest1,
                "emdtest2":emdtest2,
                "emdtest3":emdtest3}

def main():
    test_list = UserSelect()
    for i in range(len(test_list)):
        if test_list[i] in EMDTestsDict.keys():
            EMDTestsDict[test_list[i]]()

def UserSelect():
    message = "Which EMD tests would you like to run?"
    title = "EMD Test Selector"
    tests = ["emdtest1",
             "emdtest2",
             "emdtest3"]
    selected_master = multchoicebox(message, title, tests)
    return selected_master

if __name__ == '__main__':
    main()

2 ответа

Решение

Вы помещаете модули в диктовку, когда хотите добавить в нее функции. То, что вы делаете, это эквивалентно тому, чтобы сказать

import os
os()

Что, конечно, не имеет смысла. Если emdtest1, emdtest2, а также emdtest3 это.py файлы с функциями в них, вы хотите:

from emdtest1 import function_name

куда function_name это название вашей функции.

Вам нужно импортировать функции, а не модуль... например, если у вас есть файл с именем emdtest1 с определенной функцией emdtest1, вы должны использовать:

from emdtest1 import emdtest1
Другие вопросы по тегам