Самый простой подход для программы служебного типа - это что-то вроде следующего 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 есть наборы статей о возможных архитектурах. См., Например, статью wxPython вики о MVC . Существует также инфраструктура MVC для PyGTK, которая называется pygtkmvc .
У меня есть мнение, что, если вы не уверены, что вам нужен такой формальный подход, вам лучше использовать что-то вроде кода выше . Веб-фреймворки выигрывают от более формального подхода, потому что есть еще много частей для подключения: HTTP-запросы, HTML, JavaScript, SQL, бизнес-логика, логика представления, маршрутизация и т. Д. Даже для самых простых приложений. С вашим типичным приложением Python GUI вам просто нужно обрабатывать бизнес-логику и обработку событий, все на Python.