Найти - Пользователи
Полная версия: [wxPython] Получить идентификатор текущего фрейма.
Начало » GUI » [wxPython] Получить идентификатор текущего фрейма.
1
4umak
Решил в программе полностью разделить дизайн форм и функционала, отчего получилась вот такая вот структура:

app.py
…./logic
……..__init__.py
……..applogic.py
…./forms
……..__init__.py
……..MainFrame.py
……..SecondFrame.py

Весь основной функционал вынесен в applogic.py. В связи с чем возникает вопрос - как ловить идентификатор(?) текущего фрейма? Т.е. допустим, есть в библиотеке функция закрытия окна:
    def CloseWindow(self, event):
self.Destroy()
Но при вызове её из фрейма по self, естественно, вызывается класс самого applogic. Так вот, как словить текущее окно и что указать вместо self?:)
PooH
Ну вообще у event есть свойства
EventObject
object (usually a window) associated with the event, if any.
и
Id
identifier associated with this event, such as a button command id.
но вообще мне кажется вы лишнего вынесли в applogic
4umak
PooH
но вообще мне кажется вы лишнего вынесли в applogic
Хотелось просто ПОЛНОСТЬЮ вынести логику из файлов форм. Единственная загвоздка сейчас именно в этом вот:)
PooH
4umak
Хотелось просто ПОЛНОСТЬЮ вынести логику из файлов форм.
Можно наследовать класс с логикой от класса формы или создавать экземпляр класса формы как атрибут. Вот тут есть пример для qt http://pyobject.ru/blog/2008/05/07/pyqt-unpythonic-gui/
4umak
PooH
Можно наследовать класс с логикой от класса формы
Т.е. получается, в applogic вынести два класса - по одному на каждый фрейм, и в этих классах отдельно определять функции для каждого фрейма?

UPD. Только вот вопрос - по сути то, это ведь будет уже новый класс, пусть и наследованный. При вызове данной функции родительским классом, она всё равно будет действовать лишь в пределах потомка.
PooH
Честно говоря, я не понял. Давайте посмотрим на конкретном примере.
ЗЫ: Только отвечу наверное уже завтра.
4umak
Наследованием, как я и думал, не сработало, поэтому пришлось просто аттрибутом вызывать) Немного кривовато, конечно, но это лучшее из того, что вообще можно было сделать:)
PooH
4umak
Наследованием, как я и думал, не сработало, поэтому пришлось просто аттрибутом вызывать) Немного кривовато, конечно, но это лучшее из того, что вообще можно было сделать:)
Наоборот :) Агрегирование обычно куда предпочтительнее наследования, поскольку гораздо гибче. За подробностями в GoF.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB