2014-05-23 25 views
1

我正在使用EasyGui來允許用戶選擇多個選項。每個選項都是一個他們可以運行的功能,如果他們選擇它的話。我試圖按照其他線程中的建議使用字典,但我在實現時遇到了問題(模塊對象不可調用錯誤)。有什麼我失蹤?如果用戶選擇使用Python運行函數(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() 

這當然是沒有意義的。如果emdtest1emdtest2,並emdtest3是在他們的功能.py文件,你想:

from emdtest1 import function_name 

哪裏function_name是你的函數的名稱。

+0

謝謝,那正是問題! –

2

需要導入的功能,而不是模塊...例如,如果你有一個名爲emdtest1與定義的函數emdtest1文件,你會使用:

from emdtest1 import emdtest1