PythonHello World на wxPython

К плюсам wxwidgets(wxpython-биндинг wxwidgets на python) можно отнести «родной» внешний вид.
Однако, с виндой или питоном он не поставляется и его нужно доустанавливать отдельно.
В linux(на счет mac os не знаю) устанавливается довольно просто из репозитария.
Например установка в убунту:
sudo apt-get install python-wxgtk2.8

Сам HelloWorld(описание в коде):
# -*- coding: utf-8 -*-
#подключаем wx
import wx
#создаем класс-потомок wx.Frame
class MainWindow(wx.Frame):
    #__init__ - аналог конструктора c/c++
    def __init__(self, parent, id, title):
		#вызываем родительский метод
		wx.Frame.__init__(self, parent, id, title, size=(200,100))
		#первый параметр - родитель,второй - id,третий - заголовок,четвертый позиция
                #создаем элемент StaticText и примсваем его к переменной text
		self.text = wx.StaticText(self, -1,'0', (120, 40))
		button1 = wx.Button(self, -1, '+', (10, 10))
		button2 = wx.Button(self, -1, '-', (10, 60))
		#привязываем к нажатию на кнопки действия
		self.Bind(wx.EVT_BUTTON, self.OnPlus, id=button1.GetId())
		self.Bind(wx.EVT_BUTTON, self.OnMinus, id=button2.GetId())
                #мы можем центрировать наше окошко
		self.Centre()
                #а так же перемещать ;)
                #self.Move((800, 250))
                #и устанавливать позицию
                #SetPosition(wx.Point point)
		#показываем наше окно =)
		self.Show(True)
    def OnPlus(self, event):
        value = int(self.text.GetLabel())
        value = value + 1
        self.text.SetLabel(str(value))
    def OnMinus(self, event):
        value = int(self.text.GetLabel())
        value = value - 1
        self.text.SetLabel(str(value))
app = wx.PySimpleApp()
#создаем окно
frame=MainWindow(None, wx.ID_ANY, 'Calculator')
#запускаем "бесконечный" цикл, где будут обрабатываться события
app.MainLoop()

Готовое приложение(linux):

Жду ваших вопросов и уроков от dmbaturin :)
  • +10
  • nuclear
  • 28 июля 2009, 13:56

Комментарии (14)

На первый взгляд вполне себе хорошая библиотека, и статья понятно написано. Разве что пару слов об архитектуре wxWidgets добавить, может быть, имеет смысл.
С меня теперь по pyGTK :)
В Ubuntu 9.04 для использования wxPython необходимо установить пакет python-wxgtk2.6:
sudo apt-get install python-wxgtk2.6
Спс, добавил в статью.
По умолчанию в 9.04 стоит 2.6.2, также имеется 2.5.4. У меня 2.8 вообще не установлен, поэтому исправьте.
Я пропустил или посоветуйте хороший редактор для питона, желательно с автокомплитом и подсказками.
Именнно редактор даже не знаю. Если IDE, то Eclipse, в последней версии NetBeans тоже поддержка его есть.
Есть некая Idle, менее навороченная, но я ее не пробовал.
Ну я говорил про IDE все-таки, хоть и написал редактор, разве IDE не редактор :) Попробую NetBeans, давно хочу выучить питон, хотя бы на уровне писать мелкие скрипты и программки для своих нужд.
Если нетбинс качать будешь, то вроде пайтон там отдельным пакетом пока. Но для мелких программ и скриптов они оба слишком уж тяжелы, реальная потребность в них возникает при больших проектах из многих файлов.
Мне больше нужны подсказки и автокомплит, так язык проще учить, а не в мануалах смотреть какие параметры и где (хотя там я тоже погляжу), а нетбинс у меня всегда есть, да и скачать за пара минут канал позволяет.
Использую netbeans, но когда лень ждать его запуск или наслаждаться тормазами использую vim
Еще pydev руки не доходят поставить и посмотреть :)
используйте pydev, проверил-автодополнение работает просто отлично, осталось pydoc прикрутить
Да, спасибо, его и поставил, приятно, хотя и не айс
как вариант могу предложить Ulipad.
для wxPython есть редактор ресурсов (XRCed). После установки находится в <Путь к python.exe>\Lib\site-packages\<версия wx>\wx\tools\XRCed\xrced.py
можно более-менее сносно редактировать интерфейс. Генерирует файл-шаблон с заглушками для обработчиков событий.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.