Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4 достучатся до формочки из других модулей [RSS Feed]

#1 Авг. 9, 2011 23:25:05

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 достучатся до формочки из других модулей

Програмку составил из файлов:
main.py//1 функция создающая форму, и запускающая всё и вся
MainWindow.py// содержит class MainForm(QtGui.QMainWindow):
engine.py// движок, собственно в нём всё будет работать, и хотелось бы чтоб он имел доступ к моей формочке
думал импортиовать main, и а меине переменные формы сделать глобальной

import MainWindow
app = QtGui.QApplication(sys.argv)
form = MainWindow.MainForm()

def main():
global app
global form
form.show()
app.exec_()
input()
return 0
Но нифига, выдаёт ошибку module object has no Atribute MainForm()
как с этим боротся?
Если я пихну все переменные в main то всё идёт как по маслу.
Ну или как правильно делается когда надо чтоб други классы могли что-то изменять в форме.



Офлайн

#2 Авг. 10, 2011 00:42:33

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

PyQt4 достучатся до формочки из других модулей

Можно при создании объекта engine передать в него объект формы, что то типа такого:

import MainWindow
app = QtGui.QApplication(sys.argv)
form = MainWindow.MainForm()
engine = Engine(form)
...



Офлайн

#3 Авг. 10, 2011 09:04:43

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 достучатся до формочки из других модулей

Хм, да но engine это модуль и движок, ну ладно, попрообую подобной идеей. спасибо.



Офлайн

#4 Авг. 10, 2011 09:25:30

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

PyQt4 достучатся до формочки из других модулей

Я думаю нужно использовать MVP паттерн. Это довольно объемная тема, но она как раз описывает решение проблемы взаимодействия ядра программы и пользовательского интерфейса. В интернете есть масса материала, однако по большей части он объясняет лишь общий принцип паттерна. Я рекомендую

http://martinfowler.com/eaaDev/
http://aviadezra.blogspot.com/2007/07/twisting-mvp-triad-say-hello-to-mvpc.html

Вкратце суть в следующем. Между вашим ядром (engine) и интерфейсом (формой) появляется некий объект-медиатор, который имеет ссылки и на ядро и на форму. Этот объект (presenter в терминах MVP) следит за событиями в ядре и при возникновении интересующих его событий, дает команду форме обновить свое состояние. Также осуществляется обратная связь. Если пользователь нажал кнопку, то об этом извещается presenter, который вызывает нужный метод ядра (посчитать что-нибудь, обновить состояние и т.д.). Это позволяет сделать ядро и интерфейс независимыми друг от друга.

Конечно в простом случае достаточно описанного выше варианта.



Офлайн

#5 Авг. 13, 2011 22:12:52

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 достучатся до формочки из других модулей

Любобытно почитаю на досуге. Для данного просто го случая сделал так:

#engine.py
class get_form():

def __init__(self,form):

self.form = form

A = None
...
#main.py
form = MainWindow.MainForm()
engine.A = engine.get_form(form)
синтерпретировалось, работает на ура.
может сделаю так ,как советуете с MPV.



Офлайн

  • Начало
  • » GUI
  • » PyQt4 достучатся до формочки из других модулей[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version