Python:从单独的文件加载 UI

发布于 2024-12-09 19:58:52 字数 236 浏览 0 评论 0原文

大家好,

我正在使用 tkinter 作为我的 GUI。目前,当我编写应用程序时,大部分代码都是界面小部件。我知道如何导入已定义函数的文件并使用它们,并且我希望能够“导入”UI。这样我就可以重用 UI 文件并整理主应用程序。

我面临的概念障碍是,如果我声明一个窗口:

main = Tk()

如何从另一个模块填充“main”?

谢谢, 一个。

G'day All,

I'm using tkinter for my GUI. Currently when I write an app most of the code is the interface widgets. I know how to import a file of defined functions and use them and I want to be able to "import" the UI. That way I can reuse the UI file and declutter the main app.

The conceptual hurdle I'm facing is that if I declare a window:

main = Tk()

how do I then populate "main" from another module?

Thanks,
A.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌无敌 2024-12-16 19:58:52

我的建议是不要执行 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 继承,您的另一个选择是创建主窗口,然后将其作为参数传递给创建 GUI 的任何代码。例如:

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

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

My recommendation is to not do main=Tk(). Instead, have your UI inherit from Tk. For example:

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

If you don't like inheriting from tk.Tk, your other option is to create your main window and then pass it as an argument to whatever code you have that creates the GUI. For example:

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

# main.py
import ui
def main():
    root = tk.Tk()
    ui.CreateUI(root)
甲如呢乙后呢 2024-12-16 19:58:52

您可以将其作为参数传递,例如 import my_gui; my_gui.create(main);但对于大多数情况,我建议以相反的方式工作——让 GUI 文件成为您执行的文件,并且它从核心功能库导入数字运算函数

you could pass it as a parameter like import my_gui; my_gui.create(main); but for most situations I would recommend working the other way round -- have the GUI file be the file that you execute, and it imports the number-crunching functions from your core-functionality library

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文