Найти - Пользователи
Полная версия: Как легче начать изучение Питона?
Начало » Инструментальные средства разработки » Как легче начать изучение Питона?
1 2 3 4 5 6
ZAN
Wild Pointer
Кто-нибудь может в таком же “духе”, но только для Питона?
Да можно.
1. Создать модуль main.py
Добавить в него необходимый код (в частности, редактировать можно с помощью IDLE)
print 'hello, world!
2. Запустить программу коммандой
python main.py
Боюсь, что для создания проекта этого достаточно =)
Ferroman
Кто-нибудь может в таком же “духе”, но только для Питона?
Элементарно Ватсон! :)
Пример из wxPython
import  wx

#---------------------------------------------------------------------------
class MyMiniFrame(wx.MiniFrame):
def __init__(
self, parent, title, pos=wx.DefaultPosition, size=wx.DefaultSize,
style=wx.DEFAULT_FRAME_STYLE
):

wx.MiniFrame.__init__(self, parent, -1, title, pos, size, style)
panel = wx.Panel(self, -1)

button = wx.Button(panel, -1, "Close Me")
button.SetPosition((15, 15))
self.Bind(wx.EVT_BUTTON, self.OnCloseMe, button)
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)

def OnCloseMe(self, event):
self.Close(True)

def OnCloseWindow(self, event):
print "OnCloseWindow"
self.Destroy()

#---------------------------------------------------------------------------

class TestPanel(wx.Panel):
def __init__(self, parent, log):
self.log = log
wx.Panel.__init__(self, parent, -1)

b = wx.Button(self, -1, "Create and Show a MiniFrame", (50,50))
self.Bind(wx.EVT_BUTTON, self.OnButton, b)


def OnButton(self, evt):
win = MyMiniFrame(self, "This is a wx.MiniFrame",
style=wx.DEFAULT_FRAME_STYLE | wx.TINY_CAPTION_HORIZ)
win.SetSize((200, 200))
win.CenterOnParent(wx.BOTH)
win.Show(True)


#---------------------------------------------------------------------------


def runTest(frame, nb, log):
win = TestPanel(nb, log)
return win


#---------------------------------------------------------------------------


overview = """\
A MiniFrame is a Frame with a small title bar. It is suitable for floating
toolbars that must not take up too much screen area. In other respects, it's the
same as a wx.Frame.
"""


if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
Но,в чём вопрос я не понял. И почему в этой ветке?
regall
Я вообще не понимаю, зачем эти споры насчет методов отладки, IDE. Каждый человек со временем приходит к этим вещам для себя, в процессе изучения языка. Лично я использую Notepad2 (только для подсветки (мне без нее фигово) и нумерации строчек), для отладки pdb и print(чего-то там)… и для меня вышеизложенные вещи самые удобные, для кого-то - нет…

И я считаю, что начинать надо так:
- открываешь книжку по Python (любую), учишь базовые вещи языка…
- находишь себе задание (ну с этим проблем нет, хоть чего-то там в нете и найдешь =) )
- и кодиш до посинения =)

… тогда вот и откроются неудобства с IDE и отладкой, которые без тебя из никто не решит… Это лично мое субъективное мнение (на личном опыте изучения Python и Zope3)
Ferroman
Никаких споров :) Просто делимся опытом…
evgenyl
А мне нравится geany и под линью и под винью работает отлично, простой, лёгкий, необходимый минимум удобст, рекомендую
http://geany.uvena.de/
Wild Pointer
evgenyl
Давайте начнем с вопроса что вы хотите писать на питоне ?
гуи приложения, веб сервисы, сетевые сервисы, скрипты, утилиты ?
для какой ОС вы хотите писать ?
1) GUI под винду, а может и под никс(ы) потом. Я думал будет понятно по моему примеру.
2) Добавлять и править функционал в Zope 2 (Python 2.4.4) для нужд компании.

Ferroman
Элементарно Ватсон! smile
Пример из wxPython………..
Спасибо! Вот это похоже на ответ на мой вопрос (правда не так разжёвано как у меня).
Скачал wxPython 2.8.8.1 (win32), поставил. Понравилась демка, только вот ошибка валится:
Traceback (most recent call last):
File "C:\Python25\test.py", line 65, in <module>
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
SystemExit: 0
>>> ================================ RESTART ================================
>>>
Пока не могу отладить - не хватает знаний.

Ferroman
Но,в чём вопрос я не понял. И почему в этой ветке?
Вопрос как создать элементарное GUI приложение. В этой ветке потому что с этого мне легче начать изучение питона.

ZAN
Да можно.
1. Создать модуль main.py
Добавить в него необходимый код (в частности, редактировать можно с помощью IDLE)………
- я же говорил, что print 'hello, world! не предлагать! В моём примере явно есть: форма, кнопка и событие на кнопку с показом сообщения!

___________________________________
И ещё вопрос. Как задать рабочую папку для проекта. Хочется работать с относительными путями и не писать полный путь к файлу. Обычно у меня модули раскиданы в разные папки по назначению.
_НЕ_ предлагать работать в рабочей директории питона!
evgenyl
Для начала найди себе хороший учебник по самому языку, чтобы у тебя не возниколо проблем с конструкциями.
В питоне есть своя гуи идущая с ним это Tkinter но та его реализация которая в питоне чесно говоря оставляет желать лучшего
есть биндинги к другим гуи
wxWindows лично мне она почему-то не особо понравилась, для неё пишут IDE http://boa-constructor.sourceforge.net/Screenshots/ , имхо тоже поиграться не для чего серьёзного непойдёт
pyqt и pyqtk примерно похожи
я предпочитаю pygtk поэтому опишу то что знаю лучше всего, весь интерфейс рисуется на glade
http://glade.gnome.org/screenshots.html
он сохраняет это всё в xml, на питоне загружаеш эти грубо говоря диалоги, и описуеш реакции на сигналы от элементов
выглядит это примерно так
#!/usr/bin/python

import pygtk
pygtk.require('2.0')
import gtk
import gtk.glade

class Server:
def __init__(self):
self.wTree=gtk.glade.XML('test_glade.glade') # XML диалога
self.win=self.wTree.get_widget('window1') # берём окно из xml ки и т.д.
self.cmd_edit=self.wTree.get_widget('entry1')
self.about=self.wTree.get_widget("aboutdialog1")
self.log_view=self.wTree.get_widget("textview1")
self.log_buf=gtk.TextBuffer(None)
self.log_view.set_buffer(self.log_buf)
self.win.set_focus(self.cmd_edit)
self.signals={
'on_window1_hide':gtk.main_quit,
'on_imagemenuitem5_activate':gtk.main_quit,
'on_imagemenuitem10_activate':lambda w: self.about.show(),
'on_aboutdialog1_close': lambda w,p: self.about.hide(),
'on_button1_clicked': self.cmd,
'on_entry1_key_press_event': self.entry1_key_press,
}
self.wTree.signal_autoconnect(self.signals)
self.log('Init')
def entry1_key_press(self,w,p):
if p.string=='\r':
self.cmd(w)
def cmd(self,w):
self.log(self.cmd_edit.get_text())
self.cmd_edit.set_text('')
def debug(self,w):
print 'debug'
def log(self,text):
text+='\n'
self.log_buf.insert_at_cursor(text,len(text))

if __name__ == '__main__':
app=Server()
gtk.main()
это простое окно с по аналогии delphi мемо в центре и едит внизу
это всё кросплатформенное, в pygtk неплохой туториал можно просто пробежаться глазами и всё поймёш

в QT всё аналогично, интерфейс ресуется на Qt Desinger и почти также описываются реакции на сигналы
погугли на тему pygtk и pyqt найдеш всё что нужно

а для Zope просто учебник по питону найди и всё
Ferroman
glade мне тоже понравился, но активно с pygtk я не работал - немного с Wx, по мне - вполне неплохо.
evgenyl
вобщем они все похожи просто я выбирал по скорости разработки и простоте изучения
например в Qt Desinger нужно поломать голову чтобы правильно сделать резиновую форму
а в glade лично для меня это не составило труда, всё наглядно и просто
каждый должен выбрать то что ему больше вего подходит для решения поставленной задачи
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB