如何构建复杂的面向对象的tkinter程序



我已经使用python编写了多个gui应用程序,但是每个应用程序都是一堆初始化和函数,而且我觉得我没有充分利用面向对象功能的潜力。我已经在网上搜索了,但没有找到任何显示此类程序最佳实践的地方。因此,对于具有多个标签、菜单、按钮和屏幕以及一些后端计算的复杂 gui 应用程序,构建程序的最佳方式是什么?

目前,我只是在类的构造函数中对帧、标签等进行所有初始化,并调用一个函数来循环并执行后端工作。

我不是专家,仅将我所说的作为个人推荐,仅从从事同一个 Tkinter 项目工作的 4 年。

我的第一条建议是将所有内容细分到最低限度,并创建函数来完成这些特定任务。如果您为表单需要 4 个用户输入小部件,那么这些小部件应该构建在自己的函数中。

创建一个类来处理单独线程中的后台处理,并使用 after(( 方法检查它是否已完成,以避免通过在主线程上处理来冻结 GUI。

如果你的 GUI 的大部分是相互链接的,那么在单独的 py 文件中为它创建一个新类,并将其导入以将其与主代码完全分割。这迫使您将代码模块化,以便各部分不会相互堆叠,从而导致单个错误导致多个部分制动。例如,我制作了一个日历,该日历将每月的天数作为按钮,还有一个事件输入表单,我将其移动到一个新的py文件并仅使用mycal = moduals.create_calendar(root, master, **kwargs)

特金特是子类化的炉排。 尽可能多地利用这一点。我已经在 Tkinter 包装器上工作了一段时间,其中有很多关于子类化 Tkinter 小部件的好例子:

PyPi rapidTk

GitHub

最新更新