Форум сайта python.su
Wild PointerДа можно.
Кто-нибудь может в таком же “духе”, но только для Питона?
print 'hello, world!
python main.py
Офлайн
Кто-нибудь может в таком же “духе”, но только для Питона?Элементарно Ватсон! :)
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:])
Офлайн
Я вообще не понимаю, зачем эти споры насчет методов отладки, IDE. Каждый человек со временем приходит к этим вещам для себя, в процессе изучения языка. Лично я использую Notepad2 (только для подсветки (мне без нее фигово) и нумерации строчек), для отладки pdb и print(чего-то там)… и для меня вышеизложенные вещи самые удобные, для кого-то - нет…
И я считаю, что начинать надо так:
- открываешь книжку по Python (любую), учишь базовые вещи языка…
- находишь себе задание (ну с этим проблем нет, хоть чего-то там в нете и найдешь =) )
- и кодиш до посинения =)
… тогда вот и откроются неудобства с IDE и отладкой, которые без тебя из никто не решит… Это лично мое субъективное мнение (на личном опыте изучения Python и Zope3)
Офлайн
Никаких споров :) Просто делимся опытом…
Офлайн
А мне нравится geany и под линью и под винью работает отлично, простой, лёгкий, необходимый минимум удобст, рекомендую
http://geany.uvena.de/
Офлайн
evgenyl1) GUI под винду, а может и под никс(ы) потом. Я думал будет понятно по моему примеру.
Давайте начнем с вопроса что вы хотите писать на питоне ?
гуи приложения, веб сервисы, сетевые сервисы, скрипты, утилиты ?
для какой ОС вы хотите писать ?
FerromanСпасибо! Вот это похоже на ответ на мой вопрос (правда не так разжёвано как у меня).
Элементарно Ватсон! smile
Пример из wxPython………..
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- я же говорил, что print 'hello, world! не предлагать! В моём примере явно есть: форма, кнопка и событие на кнопку с показом сообщения!
Да можно.
1. Создать модуль main.py
Добавить в него необходимый код (в частности, редактировать можно с помощью IDLE)………
Офлайн
Для начала найди себе хороший учебник по самому языку, чтобы у тебя не возниколо проблем с конструкциями.
В питоне есть своя гуи идущая с ним это 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()
Отредактировано (Авг. 4, 2008 12:58:38)
Офлайн
glade мне тоже понравился, но активно с pygtk я не работал - немного с Wx, по мне - вполне неплохо.
Офлайн
вобщем они все похожи просто я выбирал по скорости разработки и простоте изучения
например в Qt Desinger нужно поломать голову чтобы правильно сделать резиновую форму
а в glade лично для меня это не составило труда, всё наглядно и просто
каждый должен выбрать то что ему больше вего подходит для решения поставленной задачи
Отредактировано (Авг. 4, 2008 15:17:21)
Офлайн