Tkinter:整个应用程序的一大类

Posted

技术标签:

【中文标题】Tkinter:整个应用程序的一大类【英文标题】:Tkinter: One large class for entire application 【发布时间】:2017-10-14 02:52:46 【问题描述】:

下午好,*** 社区,

我是第一次使用 GUI 编码器寻求建议。我正忙于攻读物理化学理学硕士学位。

我有一个简单的问题: 将我的整个代码封装到一个类中是否被认为是不好的做法? 我试图在类中拆分我的代码,但在处理多个类时我似乎无法正确使用初始化魔法方法。作为参考,我附上了我自己的 init。也许您可以帮助我了解如何将所有这些拆分为不同的类,这些类可以进入单独的模块。

谢谢!

class ApplicationUI(tk.Tk):
    def __init__(self):
        """
        Initialises the GUI and parent.
        """
        tk.Tk.__init__(self)
        self.create_canvas()
        self.create_menus()
        self.create_main_buttons()

        self.data = 
        self.call_counter = 0

        self.file_opts = 
        self.file_opts['filetypes'] = [('Text Files', '.txt'),('CSV Files', '.csv'),('All Files', '.*')]
        self.file_opts['initialdir'] = 'C:\\Users\xxx\Documents'
        self.file_opts['title'] = 'File'

app = ApplicationUI()
app.mainloop()

【问题讨论】:

相关:***.com/q/17466561/1639625 也非常基于意见。 create_canvas 等方法的规模和复杂程度如何? 我觉得你的问题太主观了。不,将整个 tk 代码包装到一个类中并不是一个坏习惯,如果你足够了(简单胜于复杂)并且你的类不仅仅是一个变量桶(封装)。但在某些情况下(如果事情开始变得复杂重复),最好创建一些类来表示小部件(例如框架、顶层)或其他相关对象。 感谢您的反馈!我将查看已链接的讨论。 @CommonSense 感谢您的保证。我在 Bernd Klein 的教程中学习了很多面向对象编程的技术,但我从来没有机会使用它们。因为这个,我觉得我做错了什么。 【参考方案1】:

正如 cmets 中所述,这是一个主观问题或问题 权衡利弊。

无论如何,有一个很好的pdf on clean code 讨论了一些方法和经验法则。还有一整章(10)关于类。所以也许这是一个开始感受的好地方。

【讨论】:

以上是关于Tkinter:整个应用程序的一大类的主要内容,如果未能解决你的问题,请参考以下文章

tkinter选项卡中的滚动条无法正常工作。滚动条位于我的gui应用程序的底部,而不是覆盖整个标签

如何使用 Tkinter 清除整个 Treeview

Python / Tkinter:使用按钮更新类变量

展开文本小部件以填充 Tkinter 中的整个父框架

在 Python(tkinter)中从类的外部更改类的私有属性(标签)

如何将整个tkinter画布截图为png或pdf