在其他模块中调用函数

时间:2018-06-04 07:17:13

标签: python python-3.x tkinter

我想在另一个模块中调用一个函数,但我总是得到相同的错误语句“module'mat_import'没有属性'matread'”。

从GUI获取“filename”和“button_pressed”值后,我想在mat_import中调用matread。结果应该是我在main.py中可以访问filename1和button_pressed。

main.py:

编辑:要获取“filename1”和“button_pressed”,将调用GUI.py中的函数gui。这可以工作并将文件名返回到main.py.之后我想在mat_import中调用matread。函数matread应该从main.py获取文件名并读取文件。输出是两个变量“signals”和“signaldata”。

import mat_import as mi
import GUI

filename1, button_pressed = GUI.gui()

if (button_pressed ==1):
    signals, signaldata = mi.matread

mat_import.py:

import h5py
import numpy as np
import csv
import os
import main

filename1 = ""
global matread

def matread():
    #get signals and signaldata
    return signals, signaldata

1 个答案:

答案 0 :(得分:0)

正如我的评论中所提到的,我对您的问题描述和问题中的缩进的最佳猜测是matread()是在mat_import.py文件中的另一个函数中定义的。为了从main.py中调用matread,你需要1.将它定义为全局,然后执行它定义的函数。或者,你可以在任何其他函数之外定义matread(),就像我在matread2中所做的那样下面。您可以在此处详细了解变量范围:https://matthew-brett.github.io/teaching/global_scope.html

mat_import.py:

def matread2():
        return "b"

def outer_func():
        global matread
        def matread(): return "a"

main.py:

import mat_import as mi

try:
        mi.matread()
except AttributeError as e:
        print(e)
mi.outer_func()
print mi.matread()

print mi.matread2()