在網頁設計中我使用MVC模式,但有時我需要創建非web應用程序。 這可能是一些解析器或GUI實用程序。 這種應用程序的典型解決方案是什麼模式?python非web應用程序模式
1
A
回答
3
MVC與非Web應用程序一樣適用。唯一改變的是View(GUI控件而不是Web控件)以及Controller可以/必須處理的輸入類型。
1
實用程序類型程序最直接的方法就像下面的僞代碼 - 是Python與PyGTK的提示。想象一下以某種方式操作文件的實用程序。
class File(object):
"""This class handles various filesystem-related tasks."""
def __init__(self, path):
pass
def open(self):
pass
def rename(self, new_name):
pass
def move(self, to):
pass
class Window(gtk.Window):
"""This class is the actual GUI window with widgets."""
def __init__(self):
self.entry_rename = gtk.Entry()
self.entry_move = gtk.Entry()
self.btn_quit = gtk.Button('Quit')
class App(object):
"""This is your main app that displays the GUI and responds to signals."""
def __init__(self):
self.window = Window()
# signal handlers
self.window.connect('destroy', self.on_quit)
self.window.entry_rename.connect('changed', self.on_rename_changed)
self.window.entry_move.connect('changed', self.on_move_changed)
self.window.btn_quit.connect('clicked', self.on_quit)
# and so on...
def on_quit(self):
"""Quit the app."""
pass
def on_rename_changed(self):
"""User typed something into an entry box, do something with text."""
f = File('somefile.txt')
f.rename(self.entry_rename.get_text())
def on_move_changed(self):
"""User typed something into another entry box, do something with text."""
f = File('somefile.txt')
f.move(self.entry_move.get_text())
你可以認爲這是一個非正式的MVC:File
是你的模型,Window
是視圖和App
是控制器。
當然,還有其他更正式的方法。大多數Python GUI工具包的Wiki都有關於可能的arhitectures的文章。例如,參見wxPython wiki article on MVC。還有一個PyGTK的MVC框架,名爲pygtkmvc。
我有一個意見,除非你確定你需要這樣一個正式的方法,你最好使用類似以上的代碼。 Web框架受益於更正式的方法,因爲還有更多要連接的部分:HTTP請求,HTML,JavaScript,SQL,業務邏輯,表示邏輯,路由等,即使是最簡單的應用程序也是如此。使用典型的Python GUI應用程序,您只需要使用Python處理業務邏輯和事件處理。
相關問題
- 1. 非android,非ios,非web應用程序
- 2. JQuery Web應用程序設計模式
- 3. Python web應用程序
- 4. Python到Web應用程序
- 5. 應用程序服務器用於非Web應用程序
- 6. 在Web應用程序中編輯模式查看模式
- 7. 非Web應用程序中的OpenSessionInViewInterceptor
- 8. 常規(非Web應用程序)JVM
- 9. 在非Web應用程序中的Foursquare
- 10. NHibernate與非Web應用程序的StructureMap
- 11. AWS部署非web應用程序
- 12. 適用於多模塊Web應用程序的設計模式
- 13. Python應用程序模板
- 14. 使用python開發web應用程序
- 15. 使用Python的web應用程序web.py
- 16. 使用Python刮取Web應用程序
- 17. Python web應用程序部署多個應用程序實例
- 18. Django的web應用程序和桌面Python應用程序
- 19. Convet現有的Web應用程序UI進入響應式Web應用程序
- 20. 適用於非Web應用程序的Docker + IDE的Python工作流程
- 21. 使用Java web應用程序模板
- 22. 做Rails5 API模式的應用程序和非API模式的應用程序共享代碼彼此?
- 23. 使用Python Flask構建漸進式Web應用程序
- 24. Android模式應用程序?
- 25. 發佈部署python web應用程序
- 26. Python應用程序的Web前端
- 27. 分析一個Python Web應用程序
- 28. 與Web應用程序在Python處理
- 29. 如何調整Python Web應用程序?
- 30. python上的實時web應用程序