1

我正在使用 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()
4

2 回答 2

2

您需要导入函数而不是模块...例如,如果您有一个名为 emdtest1 的文件,其中定义了函数 emdtest1,则可以使用:

from emdtest1 import emdtest1
于 2014-05-23T18:47:51.510 回答
2

当您想将函数放入其中时,您正在将模块放入字典中。你在做什么相当于说

import os
os()

当然,这没有任何意义。如果emdtest1emdtest2emdtest3是 .py 文件,其中包含函数,您需要:

from emdtest1 import function_name

function_name您的函数的名称在哪里。

于 2014-05-23T18:48:11.683 回答