Форум сайта python.su
1
Помогите пожалуйста разобраться в таком вопросе:
Имеется два класса-две формы у каждого класса есть свои методы. как разделить логику от интерфейса и создать класс контроллер где хранились бы все методы к которым мы будем обращаться?
вот первая форма:
#-*- coding: utf-8 -*-
from PyQt4 import QtGui
class Form_main(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.resize(200,200)
self.setWindowTitle(“Магазин автозапчастей”)
def zapysk(self):
self.my_form=Form_main()
self.my_form.show()
вот вторая:
#-*-coding:utf-8-*-
from PyQt4 import QtCore,QtGui
class Form_enter_in_system(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setFixedSize(237,110)
def zapysk(self):
self.my_form_enter_in_system=Form_enter_in_system()
self.my_form_enter_in_system.show()
запускающий файл:
#-*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
from start import Form_main
app=QtGui.QApplication(sys.argv)
Form_main.zapysk(Form_main)
sys.exit(app.exec_())
А вот как эти методы перенести в отдельный класс контроллер чтобы уже потом через него обращаться к методам я не совсем понимаю как это сделать,уже запарился пробовать и химичить!
Объясните пожалуйста,или скиньте пример где реализована такая задача чтобы я мог посмотреть и разобраться.
Или киньте ссылки где такие примеры можно посмотреть!
Буду вам очень благодарен!
Отредактировано (Фев. 26, 2010 19:50:43)
Офлайн
0
#!/usr/bin/env python
import sys
from PyQt4 import QtCore, QtGui
class HelloApplication(QtGui.QApplication):
def __init__(self, args):
QtGui.QApplication.__init__(self, args)
self._place_widgets()
def _place_widgets(self):
self.hellobutton = QtGui.QPushButton("Say 'Hello world!'", None)
self.connect(self.hellobutton, QtCore.SIGNAL("clicked()"), self.hello)
self.hellobutton.show()
def hello(self):
print "Hello, World!"
if __name__ == "__main__":
app = HelloApplication(sys.argv)
app.exec_()
Офлайн
1
Базука спасибо огромное!!!!!!!!! хороший и четкий пример,все сразу понятно стало!!!
Офлайн
6
на новых PyQt можно подписывать на сигналы вот так
self.hellobutton.clicked.connect(self.hello)
Офлайн
26
truporezНа новых??? Уж года полтора как…
на новых PyQt можно подписывать на сигналы вот так
Офлайн
1
Спасибо всем!!! тоже буду иметь ввиду.
Офлайн
26
Хм… Посмотрел твой пример, bazooka… Мой опыт говорит о том, что QtGui.QApplication (как и QtCore.QCoreApplication) лучше трогать только в крайнем случае и оставить его только для настройки/допилки самого приложения.
Лучше сделать класс-контроллер от QtCore.QWidget, который создать после QtGui.QApplication:
if __name__ == "__main__":
app = QtGui.Application(sys.argv)
controller = Controller()
app.exec_()
Офлайн
0
у тебя контроллер - один виджет
а в моем примере надо подправить QPushButton на QMainWindow и тогда будет ваще зашибись
Офлайн
26
bazookaОй! Это я заглючился… Обрати внимание, что в модуле QtCore нет класса QWidget. Конечно, я имел в виду QtCore.QObject. А можно, кстати, и от обычного object – переносимее.
у тебя контроллер - один виджет
bazookaЯ говорил о том, что делать из QtCore.QCoreApplication контроллер, это плохая практика. У меня были с этим трудноотлавливаемые проблемы.
в моем примере надо подправить QPushButton на QMainWindow и тогда будет ваще зашибись
Офлайн