Запуск функции в 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