Python 调用其他模块中的函数

Python 调用其他模块中的函数,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我想调用另一个模块内部的函数,但我总是得到相同的错误语句“模块'mat_import'没有属性'matread'” 从GUI中获取“filename”和“button_pressed”值后,我想在mat_import内部调用matread。结果应该是我在main.py中按下了filename1和button_accessible main.py: import h5py import numpy as np import csv import os import main filename1

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

从GUI中获取“filename”和“button_pressed”值后,我想在mat_import内部调用matread。结果应该是我在main.py中按下了filename1和button_accessible

main.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
编辑:要获取“filename1”和“button_pressed”,调用gui.py中的函数gui。这将起作用并将文件名返回到main.py。之后,我想在mat_import内部调用matread。函数matread应该从main.py获取文件名并读取文件。输出为两个变量“信号”和“信号数据”

mat\u 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

正如我在评论中提到的,根据您对问题的描述和问题中的缩进,我的最佳猜测是matread()是在mat_import.py文件的另一个函数中定义的。为了使matread可以从main.py调用,您需要1。将其定义为全局和2。执行在中定义的函数。或者,您可以在任何其他函数之外定义matread(),正如我在下面使用matread2所做的那样。您可以在此处阅读有关变量范围的更多信息:

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()

您没有调用
matread
,您是否尝试了
mi.matread()
是,但发生了相同的错误。matread是否定义为全局?如果它是在另一个函数中定义的(从缩进中看),那么它可能不在mat_导入模块的全局命名空间中。更多信息:@Jonas我看不出我的代码有什么问题。我该如何定义matread?@Rainer请看下面的答案。现在我出现了错误“模块'mat_import'没有属性'outer_func'”。您能发布整个mat_import文件吗@Rainer@Rainer这只是一个示例,实际上并不是您的代码如何工作的——我发布的代码是独立运行的,正如使用不同的文件名所描述的那样。如果有其他代码,则必须正确集成我的代码。另外,outer_func是一个占位符,我不知道在您的代码中调用了什么outer函数。@Jonas很抱歉,我不能发布整个mat_导入文件,因为我工作的公司不允许我这样做。