Форум сайта python.su
Решил в программе полностью разделить дизайн форм и функционала, отчего получилась вот такая вот структура:
app.py
…./logic
……..__init__.py
……..applogic.py
…./forms
……..__init__.py
……..MainFrame.py
……..SecondFrame.py
Весь основной функционал вынесен в applogic.py. В связи с чем возникает вопрос - как ловить идентификатор(?) текущего фрейма? Т.е. допустим, есть в библиотеке функция закрытия окна:
def CloseWindow(self, event):
self.Destroy()
Офлайн
Ну вообще у event есть свойства
EventObjectи
object (usually a window) associated with the event, if any.
Idно вообще мне кажется вы лишнего вынесли в applogic
identifier associated with this event, such as a button command id.
Офлайн
PooHХотелось просто ПОЛНОСТЬЮ вынести логику из файлов форм. Единственная загвоздка сейчас именно в этом вот:)
но вообще мне кажется вы лишнего вынесли в applogic
Офлайн
4umakМожно наследовать класс с логикой от класса формы или создавать экземпляр класса формы как атрибут. Вот тут есть пример для qt http://pyobject.ru/blog/2008/05/07/pyqt-unpythonic-gui/
Хотелось просто ПОЛНОСТЬЮ вынести логику из файлов форм.
Офлайн
PooHТ.е. получается, в applogic вынести два класса - по одному на каждый фрейм, и в этих классах отдельно определять функции для каждого фрейма?
Можно наследовать класс с логикой от класса формы
Отредактировано (Янв. 3, 2011 10:39:37)
Офлайн
Честно говоря, я не понял. Давайте посмотрим на конкретном примере.
ЗЫ: Только отвечу наверное уже завтра.
Офлайн
Наследованием, как я и думал, не сработало, поэтому пришлось просто аттрибутом вызывать) Немного кривовато, конечно, но это лучшее из того, что вообще можно было сделать:)
Офлайн
4umakНаоборот :) Агрегирование обычно куда предпочтительнее наследования, поскольку гораздо гибче. За подробностями в GoF.
Наследованием, как я и думал, не сработало, поэтому пришлось просто аттрибутом вызывать) Немного кривовато, конечно, но это лучшее из того, что вообще можно было сделать:)
Офлайн