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应用程序的底部,而不是覆盖整个标签