在导入模块之前启动 Tkinter GUI(延迟导入直到某些 class 已实例化)

Launch Tkinter GUI before importing a module (delay import until certain class has instantiated)

好的,所以我有一个 tkinter 应用程序,它使用来自外部脚本的后端函数。该脚本处理大型数据集,因此需要 15-20 秒的时间进行计算,但在初始加载后没有延迟。

问题是,当我将此函数导入我的 tkinter GUI 脚本时,它需要一段时间才能启动,因为它正在加载当然的模块。

我想知道是否有一种方法可以先启动我的 GUI,然后在应用程序 运行 时加载模块,或者在导入模块时启动加载屏幕。

任何有用的链接都可以,我试过在外部脚本中使用构造函数,但在该脚本中我有一堆代码在任何函数之外,因为该脚本中的所有函数都需要这些代码。

提前感谢您的任何建议。

代码:

from Content import print_similar_animes # functions from external script
from Content import get_id_from_partial_name


#These functions are within a class and are only 
                        #called when a button is  clicked.

def GetPartial(self):  
    partial=self.NameEntry.get()
    get_id_from_partial_name(partial).

def Rec(self):
    user_anime=self.NameEntry2.get()
    print_similar_animes(user_anime)

看起来您将数据加载与 UI 构建相结合。他们不必那样。解耦它,使其仅在单击按钮后加载,或者使用 after() 延迟或加载小块数据。或者使用一些人会说的线程。 after 方法参见 here

哈哈我解决了。要延迟导入直到实例化 class,导入必须在方法内。

像这样:

def GetPartial(self): 
    from Content import get_id_from_partial_name #import here 
    partial=self.NameEntry.get()
    get_id_from_partial_name(partial).

def Rec(self):
    from Content import print_similar_animes # import here
    user_anime=self.NameEntry2.get()
    print_similar_animes(user_anime)

注意 - 将导入放在 class 内但在任何方法之外仍然会导致在初始化模块时发生导入。