Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 模块将数据传递给另一个模块函数_Python_Function_Module - Fatal编程技术网

Python 模块将数据传递给另一个模块函数

Python 模块将数据传递给另一个模块函数,python,function,module,Python,Function,Module,我尝试编写一个简单的应用程序,将sqlite数据库数据显示到pygkt树视图中 到目前为止,我已经创建了五个模块,其中一个名为pycheckbook.py,它导入所有其他模块,并实例化第二个名为MainWindow.py的模块中的MainWindow类。第三个模块是checkwindow.py,它包含显示用于填充或更新数据库的表单的类。第四个模块是searchcheck.py,它的类创建了一个表单,我使用它输入各种条件,根据日期、名称等搜索数据 因此,在searchcheck.py中创建了一个查

我尝试编写一个简单的应用程序,将sqlite数据库数据显示到pygkt树视图中

到目前为止,我已经创建了五个模块,其中一个名为pycheckbook.py,它导入所有其他模块,并实例化第二个名为MainWindow.py的模块中的MainWindow类。第三个模块是checkwindow.py,它包含显示用于填充或更新数据库的表单的类。第四个模块是searchcheck.py,它的类创建了一个表单,我使用它输入各种条件,根据日期、名称等搜索数据

因此,在searchcheck.py中创建了一个查询之后,我想从MainWindow.py中的MainWindow类运行一个函数,以便执行搜索查询并用所需的数据刷新树视图

到目前为止,我已经尝试:

def find_data(self):
    #creates query
    import mainwindow
    mainwindow.show_search_checks(query)
但我得到了AttributeError:“module”对象没有“show\u search\u checks”属性,而在尝试以下操作时:

def find_data(self):
    #creates query
    import pycheckbook
    mw.show_search_checks(query)
该函数几乎可以运行,但会重新打开主窗口,比如全面执行pycheckbook脚本,而b作为字符串的查询不会传递给show_search_checks函数

pycheckbook.py就是这样的:

我觉得我在导入许多模块时犯了一些错误,我已经读到循环导入不受支持。我认为我需要做的是在一个模块中执行给定实例的函数,但Python不理解它


有人能帮我吗?

您需要MainWindow的实例来调用其show\u search\u checks方法。在第二个find_数据中,导入pycheckbook.py时创建一个模块级别1,因此请尝试在find_数据中使用pycheckbook.mw.show_search_checksquery。我按照您的指示做了一些工作,但仍然显示了第二个主窗口,并且没有发生其他任何事情。其进展是,当我试图通过按下按钮来关闭它并运行销毁功能时,它会显示查询,因此它已到达第二个主窗口。再次按下exit按钮,一起退出程序。可能只有一个MainWindow实例,即首次导入pycheckbook.py时创建的实例。这意味着程序中对它或它的一个方法的所有引用都应该是在pycheckbook.mw中创建的并且是唯一的一个。我怀疑checksearch.py和checkwindow.py可能会导致这种情况,因为它们都有要求导入pycheckbook的函数,担心导入作为程序启动程序的模块会生成MainWindow的第二个实例。不幸的是,情况并非如此。通过mainwindow.py中的func创建CheckForm实例是否会导致重新创建mainwindow?这太疯狂了,但我真的看不到任何其他东西可以查看。导入的模块缓存在sys.modules中,它实际上是一个字典,将模块名称映射到加载的模块实例。无论何时导入一个实例,都会检查缓存中是否已经存在该实例的实例,如果存在,则返回该值。这意味着模块主体中的代码通常只执行一次,第一次是import语句的主题,而不是缓存中。导入pycheckbook后对pycheckbook.mw的所有引用都应解析为同一个MainWindow实例。
# -*- coding: utf-8 -*-
import mainwindow
import checkwindow
mw = mainwindow.MainWindow()
mw.showGUI()
mw.main()