Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
fullcircle:32:python_ч_6 [2010/06/20 17:18] |
fullcircle:32:python_ч_6 [2013/10/09 10:33] (текущий) [FrameSecond code:] удаление лишнего кода |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
//Автор — Грэг Валтерс (Greg Walters)// | //Автор — Грэг Валтерс (Greg Walters)// | ||
</style> | </style> | ||
+ | |||
- [[..:27:python_ч_1|Программа на Python — часть 1]] | - [[..:27:python_ч_1|Программа на Python — часть 1]] | ||
Строка 13: | Строка 14: | ||
- [[..:34:python_ч_8|Программа на Python — часть 8]] | - [[..:34:python_ч_8|Программа на Python — часть 8]] | ||
- [[..:35:python_ч_9|Программа на Python — часть 9]] | - [[..:35:python_ч_9|Программа на Python — часть 9]] | ||
+ | - [[..:36:python_ч_10|Программа на Python — часть 10]] | ||
+ | - [[..:37:python_ч_11|Программа на Python — часть 11]] | ||
+ | - [[..:38:python_ч_12|Программа на Python — часть 12]] | ||
+ | - [[..:39:python_ч_13|Программа на Python — часть 13]] | ||
+ | - [[..:40:python_ч_14|Программа на Python — часть 14]] | ||
Думаю, что вы поигрались с Boa Constructor со времени нашей последней встречи. Сначала мы напишем простую программу, которая открывает одно окно, а после нажатия кнопки — второе окно. В прошлый раз мы открывали окно сообщений. На этот раз мы откроем отдельное окно. Это будет полезно при создании приложений с несколькими окнами. Итак, приступим... | Думаю, что вы поигрались с Boa Constructor со времени нашей последней встречи. Сначала мы напишем простую программу, которая открывает одно окно, а после нажатия кнопки — второе окно. В прошлый раз мы открывали окно сообщений. На этот раз мы откроем отдельное окно. Это будет полезно при создании приложений с несколькими окнами. Итак, приступим... | ||
Строка 32: | Строка 38: | ||
{{ :fullcircle:32:screenshot_003.png?350 }} | {{ :fullcircle:32:screenshot_003.png?350 }} | ||
- | Теперь настала пора разобраться со второй формой. Откройте «FrameSecond» в режиме дизайнера. Задайте название «FrameSecond» и заголовок «Second Frame». Задайте центровку «wx.BOTH». Добавьте кнопку и выровняйте её в нижней части окна. Задайте название «btnFSExit» и заголовок «Exit». Создайте событие для кнопки. Добавьте элемент управления «wx.StaticText» в верхней части окна ближе к середине. Назовите его «stHiThere», задайте надпись «Hi there...I'm the second form!», начертание «Sans», размер 14 пт и плотность «wxBOLD». Теперь сбросьте положение, чтобы в форме кнопка была выровнена справа и слева. Это можно сделать, сняв галочку с атрибута «Position», и изменять положение «X» для сдвига кнопки вправо и влево, и положение «Y» для сдвига кнопки вверх и вниз до тех пор, пока результат не удовлетворит вас. Запишите изменения и сохраните их. | + | Теперь настала пора разобраться со второй формой. Откройте «FrameSecond» в режиме дизайнера. Задайте название «FrameSecond» и заголовок «Second Frame». Задайте центровку «wx.BOTH». Добавьте кнопку и выровняйте её в нижней части окна. Задайте название «btnFSExit» и заголовок «Exit». Создайте событие для кнопки. Добавьте элемент управления «wx.StaticText» в верхней части окна ближе к середине. Назовите его «stHiThere», задайте надпись «Hi there...I'm the second form!», начертание «Sans», размер 14 пт и плотность «wxBOLD»(Props->Font). Теперь сбросьте положение, чтобы в форме кнопка была выровнена справа и слева. Это можно сделать, сняв галочку с атрибута «Position», и изменять положение «X» для сдвига кнопки вправо и влево, и положение «Y» для сдвига кнопки вверх и вниз до тех пор, пока результат не удовлетворит вас. Запишите изменения и сохраните их. |
После того как мы создали формы, мы напишем код, который «склеит» их все. | После того как мы создали формы, мы напишем код, который «склеит» их все. | ||
Строка 100: | Строка 106: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
main()</code> | main()</code> | ||
- | |||
- | FrameMain code: | ||
- | |||
- | #Boa:Frame:FrameMain | ||
- | |||
- | import wx | ||
- | import FrameSecond | ||
- | |||
- | def create(parent): | ||
- | return FrameMain(parent) | ||
- | |||
- | [wxID_FRAMEMAIN, wxID_FRAMEMAINBTNEXIT, wxID_FRAMEMAINBTNSHOWNEW, | ||
- | wxID_FRAMEMAINPANEL1, | ||
- | ] = [wx.NewId() for _init_ctrls in range(4)] | ||
- | |||
- | class FrameMain(wx.Frame): | ||
- | def _init_ctrls(self, prnt): | ||
- | # generated method, don't edit | ||
- | wx.Frame.__init__(self, id=wxID_FRAMEMAIN, name=u'FrameMain', | ||
- | parent=prnt, pos=wx.Point(846, 177), size=wx.Size(400, 340), | ||
- | style=wx.DEFAULT_FRAME_STYLE, title=u'Main Frame') | ||
- | self.SetClientSize(wx.Size(400, 340)) | ||
- | self.Center(wx.BOTH) | ||
- | |||
- | self.panel1 = wx.Panel(id=wxID_FRAMEMAINPANEL1, name='panel1', | ||
- | parent=self, pos=wx.Point(0, 0), size=wx.Size(400, 340), | ||
- | style=wx.TAB_TRAVERSAL) | ||
- | |||
- | self.btnShowNew = wx.Button(id=wxID_FRAMEMAINBTNSHOWNEW, | ||
- | label=u'Show the other frame', name=u'btnShowNew', | ||
- | parent=self.panel1, pos=wx.Point(120, 103), size=wx.Size(168, 29), | ||
- | style=0) | ||
- | self.btnShowNew.SetBackgroundColour(wx.Colour(25, 175, 23)) | ||
- | self.btnShowNew.Bind(wx.EVT_BUTTON, self.OnBtnShowNewButton, | ||
- | id=wxID_FRAMEMAINBTNSHOWNEW) | ||
- | FrameMain Code (cont.): | ||
- | self.btnExit = wx.Button(id=wxID_FRAMEMAINBTNEXIT, label=u'Exit', | ||
- | name=u'btnExit', parent=self.panel1, pos=wx.Point(162, 191), | ||
- | size=wx.Size(85, 29), style=0) | ||
- | self.btnExit.SetBackgroundColour(wx.Colour(225, 218, 91)) | ||
- | self.btnExit.Bind(wx.EVT_BUTTON, self.OnBtnExitButton, | ||
- | id=wxID_FRAMEMAINBTNEXIT) | ||
- | |||
- | def __init__(self, parent): | ||
- | self._init_ctrls(parent) | ||
- | self.Fs = FrameSecond.FrameSecond(self) | ||
- | |||
- | def OnBtnShowNewButton(self, event): | ||
- | #event.Skip() | ||
- | self.Fs.Show() | ||
- | self.Hide() | ||
- | |||
- | def OnBtnExitButton(self, event): | ||
- | #event.Skip() | ||
- | self.Close() | ||
- | |||
- | ====FrameSecond code:==== | ||
- | |||
- | <code>#Boa:Frame:FrameSecond | ||
- | |||
- | import wx | ||
- | |||
- | def create(parent): | ||
- | return FrameSecond(parent) | ||
- | |||
- | [wxID_FRAMESECOND, wxID_FRAMESECONDBTNFSEXIT, wxID_FRAMESECONDPANEL1, | ||
- | wxID_FRAMESECONDSTATICTEXT1, | ||
- | ] = [wx.NewId() for _init_ctrls in range(4)] | ||
- | |||
- | class FrameSecond(wx.Frame): | ||
- | def _init_ctrls(self, prnt): | ||
- | # generated method, don't edit | ||
- | wx.Frame.__init__(self, id=wxID_FRAMESECOND, name=u'FrameSecond', | ||
- | parent=prnt, pos=wx.Point(849, 457), size=wx.Size(419, 236), | ||
- | style=wx.DEFAULT_FRAME_STYLE, title=u'Second Frame') | ||
- | self.SetClientSize(wx.Size(419, 236)) | ||
- | self.Center(wx.BOTH) | ||
- | self.SetBackgroundStyle(wx.BG_STYLE_COLOUR) | ||
- | |||
- | self.panel1 = wx.Panel(id=wxID_FRAMESECONDPANEL1, name='panel1', | ||
- | parent=self, pos=wx.Point(0, 0), size=wx.Size(419, 236), | ||
- | style=wx.TAB_TRAVERSAL) | ||
- | |||
- | self.btnFSExit = wx.Button(id=wxID_FRAMESECONDBTNFSEXIT, label=u'Exit', | ||
- | name=u'btnFSExit', parent=self.panel1, pos=wx.Point(174, 180), | ||
- | size=wx.Size(85, 29), style=0) | ||
- | self.btnFSExit.Bind(wx.EVT_BUTTON, self.OnBtnFSExitButton, | ||
- | id=wxID_FRAMESECONDBTNFSEXIT) | ||
- | |||
- | self.staticText1 = wx.StaticText(id=wxID_FRAMESECONDSTATICTEXT1, | ||
- | label=u"Hi there...I'm the second form!", name='staticText1', | ||
- | parent=self.panel1, pos=wx.Point(45, 49), size=wx.Size(336, 23), | ||
- | style=0) | ||
- | self.staticText1.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD, | ||
- | False, u'Sans')) | ||
- | |||
- | def __init__(self, parent): | ||
- | self._init_ctrls(parent) | ||
- | self.parent = parent | ||
- | |||
- | def OnBtnFSExitButton(self, event): | ||
- | #event.Skip() | ||
- | self.parent.Show() | ||
- | self.Hide()</code> | ||
====FrameMain code:==== | ====FrameMain code:==== |