Python:从单独文件加载UI

1 投票
2 回答
3068 浏览
提问于 2025-04-17 04:12

大家好,

我正在用tkinter来做我的图形界面(GUI)。目前我写的应用程序大部分代码都是关于界面控件的。我知道怎么导入一个定义了函数的文件并使用它们,但我想要能够“导入”用户界面(UI)。这样我就可以重用这个UI文件,让主应用程序的代码更简洁。

我现在面临的一个概念性难题是,如果我声明了一个窗口:

main = Tk()

那么我该如何从另一个模块中填充“main”呢?

谢谢,

A.

2 个回答

0

你可以把它当作一个参数传递,比如 import my_gui; my_gui.create(main);不过在大多数情况下,我建议反过来做——让GUI文件成为你执行的文件,然后它从你的核心功能库中导入那些进行计算的函数。

0

我的建议是不要直接使用 main=Tk()。相反,应该让你的用户界面(UI)继承自 Tk。比如说:

# in ui.py
import Tkinter as tk
class MyApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        ...

# in main.py
import ui
def main():
    main = ui.MyApp()
    main.mainloop()

如果你不喜欢从 tk.Tk 继承,另一种选择是先创建你的主窗口,然后把它作为参数传递给你用来创建图形界面的代码。比如:

# ui.py
def CreateUI(root)
    ...

# main.py
import ui
def main():
    root = tk.Tk()
    ui.CreateUI(root)

撰写回答