рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди!
рдпрд╣ рд▓реЗрдЦ рджреЛ-рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, PyQt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП MVC рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
0 рдкрд░рд┐рдЪрдп
рдПрдорд╡реАрд╕реА - рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдЬреЛ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓, рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред MVC рдореЗрдВ рддреАрди рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ ,
рд░рдгрдиреАрддрд┐ рдФрд░
рд▓реЗрдЖрдЙрдЯ ред рд▓реЗрдЦ рдПрд░рд┐рдХ рдлреНрд░реАрдореИрди рдХреА рдкреБрд╕реНрддрдХ
рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдПрдХ рд╕рдХреНрд░рд┐рдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рд╕рд┐рдХ рдПрдорд╡реАрд╕реА рдпреЛрдЬрдирд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред
рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рдЕрдЬрдЧрд░ 3.2
- PyQt 4.9.1
- рдЖрдИрдбреАрдИ (рдореИрдВрдиреЗ PyCharm 2.0.2 рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛)
1 рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛
рдЪрд▓реЛ SimpleMVC рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рддрд╛рдХрд┐ рдХрд╛рд░реНрдп рдЗрддрдирд╛ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдо
рдП рдФрд░
рдмреА рдирд╣реАрдВ , рдмрд▓реНрдХрд┐
рд╕реА рдФрд░
рдбреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЪрд╛рд░ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдореЙрдбрд▓ ,
рдирд┐рдпрдВрддреНрд░рдХ рдФрд░
рджреГрд╢реНрдп рдореЙрдбреНрдпреВрд▓ рдХреНрд░рдорд╢рдГ
рдореЙрдбрд▓ ,
рдирд┐рдпрдВрддреНрд░рдХ рдФрд░
рджреГрд╢реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред
рдпреВрдЯрд┐рд▓рд┐рдЯреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рд╣реЛрддреЗ рд╣реИрдВред
Main.pyw рдлрд╝рд╛рдЗрд▓
рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
SimpleMVC \
рдирд┐рдпрдВрддреНрд░рдХ \
__init__.py
CplusDController.py
рдореЙрдбрд▓ \
__init__.py
CplusDModel.py
рдЙрдкрдпреЛрдЧрд┐рддрд╛ \
__init__.py
CplusDMeta.py
CplusDObserver.py
рджреЗрдЦреЗрдВ
__init__.py
CplusDView.py
MainWindow.py
MainWindow.ui
main.pyw
2 рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдирд╛
рдореЙрдбрд▓ (рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ!) рдЖрд╡реЗрджрди рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
CplusDModel рдХрд╛ рдХрд╛рд░реНрдп рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЬреЛрдбрд╝ рд╣реИред
CplusDModel.py рдлрд╝рд╛рдЗрд▓:
class CplusDModel: """ CplusDModel . c, d . , . , . """ def __init__( self ): self._mC = 0 self._mD = 0 self._mSum = 0 self._mObservers = []
рдореЙрдбрд▓ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдХреЛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ, рд╣рдЯрд╛рдиреЗ рдФрд░ рд╕рддрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЙрдбрд▓ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдФрд░ рдЕрднреНрдпрд╛рд╡реЗрджрди рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рднреА рдкрдВрдЬреАрдХреГрдд рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╕реВрдЪрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
рдореЙрдбрд▓рдЖрдИрд╕рдВрдЪрд╛рд▓рд┐рдд () рд╡рд┐рдзрд┐ рд╣реИ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреЛ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ
рдорд┐рд▓рд╛ ,
рдореЙрдбрд▓рдЗрдВрд╕рдЪреЗрдВрдЬ () рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
CplusDObserver.py рдлрд╝рд╛рдЗрд▓:
from abc import ABCMeta, abstractmethod class CplusDObserver( metaclass = ABCMeta ): """ . """ @abstractmethod def modelIsChanged( self ): """ . """ pass
рдмреЗрд╢рдХ, "рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рдЕрдЬрдЧрд░" рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рд░
рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд░рдиреЗ рдпрд╛ рдореБрд╢реНрдХрд┐рд▓
NotImplementedError () рдЕрдкрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдкреНрд░рддрд┐рдХреВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ PyQt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд╕реНрд▓реЙрдЯ-рд╕рд┐рдЧреНрдирд▓ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдм рд╕реНрдерд┐рддрд┐ рдмрджрд▓рддреА рд╣реИ, рддреЛ рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдВрдХреЗрдд рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╕рднреА рдЬреБрдбрд╝реЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдо рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд▓рдЧрддрд╛ рд╣реИ - рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреИрдЯрд░реНрди (рдкрдВрдЬреАрдХрд░рдг, рд╡рд┐рд▓реЛрдкрди рдФрд░ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреА рдЕрдзрд┐рд╕реВрдЪрдирд╛) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд░реНрдЧ рдЕрдореВрд░реНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
3 рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рдПрдБ
рдПрдХ рджреГрд╢реНрдп рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИ рдФрд░ рдПрдХ рд▓рд┐рдВрдХрд░ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреГрд╢реНрдп рд╕рдВрдкрд╛рджрдХ
рдбрд┐рдЬрд╛рдЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ PyQt рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реИред
рдореЗрдирд╡рд┐рдВрдбреЛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛рдПрдБред рдЖрдХрд╛рд░ рд╕рдВрд░рдЪрдирд╛:
рдореЗрдирд╡рд┐рдВрдбреЛ - QMainWindow
CentralWidget - QWidget
lbl_equal - QLabel
lbl_plus - QLabel
le_c - QLineEdit
le_d - QLineEdit
le_result - QLineEdit
рд░реВрдк рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐:

рдкреНрд░рдкрддреНрд░ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Ctrl + R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
MainWindow.ui рдирд╛рдо рдХреЗ рддрд╣рдд
рджреГрд╢реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВред рдЕрдм рд╣рдо рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░
MainWindow.py рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
pyuic4.bat (... \ Python32 \ Lib \ рд╕рд╛рдЗрдЯ-рд╕рдВрдХреБрд▓ \ PyQt4) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
pyuic4.bat ... \ SimpleMVC \ View \ MainWindow.ui -o ... \ SimpleMVC \ View \ MainWindow.py
"..." рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░рд╛ рд░рд╛рд╕реНрддрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
D: \ Projects \ PythonProjects \ SimpleMVC \ View \ MainWindow.ui
рдпрджрд┐ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЙрд╕реЗ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
pyrcc4.exe (... \ Python32 \ Lib \ рд╕рд╛рдЗрдЯ-рд╕рдВрдХреБрд▓ \ PyQt4) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╛рдпрдерди 3.x рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ -py3 рдзреНрд╡рдЬ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
pyrcc4.exe -o ... \ SimpleMVC \ View \ MainWindow_rc.py -py3 ... \ SimpleMVC \ View \ MainWindow_rc.qrc
"_Rc" рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ рд╣рдорд╛рд░реЗ рдлреЙрд░реНрдо рд╕реЗ рдЬреБрдбрд╝реА рдереА, рддреЛ pyuic4.bat рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛:
import MainWindow_rc
рдЕрдм рдЖрдкрдХреЛ рд╡реНрдпреВ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдПрдорд╡реАрд╕реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рджреГрд╢реНрдп рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
CplusDView.py рдлрд╝рд╛рдЗрд▓:
from PyQt4.QtGui import QMainWindow, QDoubleValidator from PyQt4.QtCore import SIGNAL from Utility.CplusDObserver import CplusDObserver from Utility.CplusDMeta import CplusDMeta from View.MainWindow import Ui_MainWindow class CplusDView( QMainWindow, CplusDObserver, metaclass = CplusDMeta ): """ CplusDModel. """ def __init__( self, inController, inModel, parent = None ): """ . """ super( QMainWindow, self ).__init__( parent ) self.mController = inController self.mModel = inModel
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреГрд╢реНрдп рджреЛ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИ:
QMainWindow рдФрд░
CplusDObserver ред рджреЛрдиреЛрдВ рд╡рд░реНрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЗрдЯрд╛рдХреНрд▓рд╛рд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП,
CplusDView рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП,
рдЖрдкрдХреЛ рдПрдХ
рдореЗрдЯрд╛рдХреНрд▓рд╕ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ QMainWindow рдФрд░ CplusDObserver рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдЯрд╛рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
CplusDMeta рд╣реИ ред
CplusDMeta.py рдлрд╝рд╛рдЗрд▓:
""" , . pyqtWrapperType - Qt. ABCMeta - . CplusDMeta - . """ from PyQt4.QtCore import pyqtWrapperType from abc import ABCMeta class CplusDMeta( pyqtWrapperType, ABCMeta ): pass
4 рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдирд╛
рдирд┐рдпрдВрддреНрд░рдХ рдкреИрдЯрд░реНрди рд░рдгрдиреАрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рддреБрдЪреНрдЫ рд╣реИред
CplusDController.py рдлрд╝рд╛рдЗрд▓:
from View.CplusDView import CplusDview class CplusDController(): """ CplusDController . . """ def __init__( self, inModel ): """ . . """ self.mModel = inModel self.mView = CplusDview( self, self.mModel ) self.mView.show() def setC( self ): """ C, c . """ c = self.mView.ui.le_c.text() self.mModel.c = float( c ) def setD( self ): """ D, d . """ d = self.mView.ui.le_d.text() self.mModel.d = float( d )
5 рдШрдЯрдХреЛрдВ рдХрд╛ рдХрдиреЗрдХреНрд╢рди
рдпрд╣ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред
рдореЗрдирд╣реЛрдо рдлрд╝рд╛рдЗрд▓:
import sys from PyQt4.QtGui import QApplication from Model.CplusDModel import CplusDModel from Controller.CplusDController import CplusDController def main(): app = QApplication( sys.argv )
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рд╕реНрд░реЛрдд рдХреЛрдб