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

下午好,StackOverflow 社区,

我是第一次使用 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()

【问题讨论】:

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

标签: python class tkinter


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-10-08
    • 2022-01-03
    • 2022-11-14
    • 1970-01-01
    • 2016-01-05
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    相关资源
    最近更新 更多