Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3483 posts.

GUI » Свое меню на основе (gtk.MenuBar) » Янв. 14, 2009 08:47:04

Всем привет. С python и ООП я не давно. Принял решение писаль диплом на связке python pygtk gtk glade. Для практики и тренировки решил реализовать какую штуку:
Вот такой код реализует горизонтальное меню под заголовком экрана с элементами File и Edit. gtk.MenuBar как и gtk.MenuItem - это подклассы абстрактного базового класса gtk.MenuShell()
	self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.mainMenu = gtk.MenuBar()

menuItem1 = gtk.MenuItem("_File")
menuItem2 = gtk.MenuItem("_Edit")

self.VBox1 = gtk.VBox(False, 0)
self.window.set_default_size(800,600)

self.window.add(self.VBox1)
self.VBox1.pack_start(self.mainMenu, False, False, 0)

list = [menuItem1, menuItem2]
for i in list:
self.mainMenu.append(menuItem1)

self.VBox1.show()
self.mainMenu.show()
menuItem1.show()
menuItem2.show()
self.window.show()
При организации такого меню необходимо добавлять элементы методом append, и отображать их.
Я хочу написать класс (наверное он должен быть наследником) подобный gtk.MenuBar, только который уже в своем определении имеет какие либо элементы меню, а также при вызове метода show() появлялись бы и меню и его элементы.
Начал так :), а вот дальше …
class myBar (gtk.MenuBar):
def __init__(self):
gtk.MenuBar.__init__(self)
Буду рад всем коментам.

Python для экспертов » nose + doctests » Янв. 10, 2009 16:31:33

Помогите, пожалуйста!

Не могу понять принципа работы этой связки.
Мне нужна очень простая вещь - в фикстуре setup определить окружение для доктестов, грубо говоря список переменных, которые будут видны на уровне doctest. Это может быть, скажем, connection к базе с тестовыми данными, импортированные модули, которые будут нужны для doctest-ов и так далее. Я не нашел как это сделать! То есть абсолютно! После часа поисков и смотрения в код nose у меня сложилось впечатление, что в моем подходе что-то не так концептуально. Насколько я вижу setup зовется, но от него не требуется чего-нибудь возвращать. Не понимаю! Через какие-то глобальные структуры что ли это передавать?

Разъясните, пожалуйста, как вообще это должно работать.

Примечание:
В последнем релизе nose фикстуры для doctest не поддерживаются. Я взял то, что у них в транке и игрался с ним.
http://python-nose.googlecode.com/svn/trunk/

Заранее спасибо!

Python для новичков » Audiere » Янв. 7, 2009 19:29:34

Требуется Audiere… Но максимальное, подо что она есть - Python 2.3
Сейчас пользую 2.4 но хочется. Обязательно ждать релиза, или можно быстро поправить?
Там такая структура - DLL и PYD.
http://audiere.sourceforge.net/download.php

Web » SSL - парсинг сертификата » Янв. 4, 2009 23:08:07

Всем привет!
Стоит задача - проверять различные аспекты безопасности используемого SSL сертификата, как то:
- срок годности
- самоподписанный или нет
- на чье имя ввыписан
- используемый алгоритм для подписи

Сейчас используется PyOpenSSL для этих целей.
Но его возможностей просто не хватает: не понятно как получить доступ к X509v3 extensions и Certificate Signature Algorithm :(
Может кто посоветует другие способы работы с SSL сертификатами?

Python для новичков » аналог canvas.translate но с абсолютным переносом координат » Дек. 25, 2008 13:17:30

Всем привет,
кто нибудь встречал способ для переноса начала координат с указанием абсолютного значения
новых координат (от левого нижнего угла canvas?),
А не относительных которые предлагает метод:
canvas.translate()
относительно последней установленной точки начала координат.
P.S. или как восстановить начало координат в любой момент времени, в левый нижний угол?

Python проекты » django-NinjaPaginator » Дек. 22, 2008 21:44:03

Описание:
Джанго аппликация для лёгкого встраивания известных типов деления на страницы.

На данный момент имеются следующие виды пагинации:
* Digg.com
* Filmfeed.ru


Старница проекта:
http://www.assembla.com/spaces/ninja-paginator



Примеры использования:
# views.py

from ninjapaginator.util import NinjaPaginator
from annoying.decorators import render_to
from blog.models import Post


@render_to('blog_posts.html')
@NinjaPaginator(style='digg', per_page=15)
def list_posts(request):
posts = Post.objects.all()
return {'object_list': posts}
# blog_posts.html
{% for post in object_list %}
{{ post.title }}
{% endfor %}


<p>
{% include "paginator.html" %}
</p>

# that's it, your page now have "digg.com" style paginator.
Зависимости:
* python >= 2.4
* django >= 1.0
* render_to decorator


Интрукции установки:
* Скопировать папку ninjapaginator в папку проекта или положить куда нибудь в PYTHONPATH
* Прописать ‘ninjapaginator’ в INSTALLED_APPS
* Перенести файл paginator.css в папку ваших статических файлов и подключить его в html


Адрес mercurial репозитория
hg clone http://hg.assembla.com/ninja-paginator


Лицензия
BSD

Django » Безболезненное внесение изменений в модель » Дек. 21, 2008 15:38:00

Поделитесь опытом, кто как решает проблемы в случае если нужно внести изменение в модель? Скажем, добавление дополнительного поля.

Django » *args, **kwargs в определении super функции класса » Дек. 18, 2008 18:22:20

Hi.

Мой вопрос относительно этой строки
http://code.djangoproject.com/browser/django/trunk/django/forms/fields.py#L144
а именно этой части
.__init__(*args, **kwargs)
здесь параметр **kwargs и *args используются только для передачи переменных определенных во входных параметрах этого класса и род.класса?
Потому что другие параметры туда вставляемые дают ошибку.
Например как f = forms.CharField(f='test').

__init__() got an unexpected keyword argument 'f'

Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/register/
Exception Type: TypeError
Exception Value:

__init__() got an unexpected keyword argument 'f'
Спасибо

Флейм » OpenOpt 0.21: Українське вільне ПЗ для чисельної оптимізації » Дек. 16, 2008 20:51:49

Вийшов черговий реліз 0.21 вільного (ліцензія BSD) ПЗ для чисельної оптимізації OpenOpt, що розробляється співробітниками відділу оптимізації ІК НАНУ.
http://openopt.blogspot.com/2008/12/openopt-release-021.html

Він написан мовою програмування Python, що на вiдміну від С та Fortran дозволяє RAD (Rapid application development).

Комерційні аналоги коштують тисячі та навіть десятки тисяч доларів, окрім того приблизно 10% доводиться витрачати на оновлення програмних бібліотек щорічно.

Докладніше про openopt:
українською мовою
http://scipy.org/scipy/scikits/wiki/OOdescr_ua
російською мовою
http://scipy.org/scipy/scikits/wiki/OOdescr_r

Наразі OpenOpt переноситься на новий хостінг від uafoss.org, де вже створено новий форум присвячений чисельній оптимізації та відповідного вільного программного забеспечення.
http://forum.openopt.org

За підтримку у створенні нового сайту та форуму для OpenOpt ми маємо подякувати Михайлу Даниленко (Mickhailo Danilenko) та Володимиру Лисівці (Volodimir M. Lisivka) з linux.org.ua (LOU) community, особлива подяка Вадиму Машкову (Wadim V. Mashkov) та Михайлу Шигоріну (Michael Shigorin) з linux.kiev.ua community.

– Розробники OpenOpt

GUI » Cairo: виджет работает, но невидим » Дек. 15, 2008 04:32:03

Здравствуйте!

Есть замечательный пример программирования Cairo, в котором рисуются великолепные часы: http://www.pygtk.org/articles/cairo-pygtk-widgets/clock_ex5.py
Из кода видно, что мышкой можно захватывать и вращать минутную стрелку, информация будет идти в консоль.

Я решил вставить такие часы в свое приложение (PyGTK + Glade):
    clock = EggClockFace()
clock.connect("expose_event", clock.expose)
clock.connect("button_press_event", clock.button_press)
clock.connect("button_release_event", clock.button_release)
clock.connect("time_changed", time_changed_cb)
clock.connect("motion_notify_event", clock.motion_notify)
clock.set_size_request (100, 100)
clock.show ()
main.wTree.get_widget ("table2").attach (clock, 11, 12, 1, 4)
main - экземпляр моего класса приложения.

В итоге, часы добавляются на мою форму приложения, но остаются невидимы, хотя и работают 100%, т.к. при попытках “наугад” покликать мышкой в их области в консоль попадают сообщения о захватах стрелки. Кроме того явно заметно, что выделяется область 100х100 в моем окне, но сам виджет часов по-прежнему невидим. Бьюсь уже всю ночь! Что это может быть? :(

Django » Кастомные вьюшки в админке. » Дек. 10, 2008 17:05:10

Предположим, есть такая задача:
Есть класс пользователей, есть их комменты.
Помимо полей редактирования пользователя, я хочу зделать листинг комментов с кнопками удалить(и последним элементом форму добавления коммента). Проблема в том, что я использую TabularInline, и комменты внизу отображаются сразу редактируемые, мне же нужно что бы они просто отображались простым текстом, и при этом была галочка(а лучше кнопка) “УДалить”. Полез в дебри формсетов и прочего, пытался изменять задефайненый шаблон, но что то совсем взорвал моск и ничего не получилось ((((
Может кто нибудь знает как примерно решить такую задачу(извеняюсь если вопрос глупый )) )
Вот код:

# -*- coding: utf-8 -*-
from django.db import models
from django.contrib import admin
from django.forms.models import modelformset_factory


#Clients
class Client(models.Model):
fname = models.CharField(max_length=255,verbose_name=u'\u0418\u043c\u044f')
lname = models.CharField(max_length=255,verbose_name=u'\u0424\u0430\u043c\u0438\u043b\u0438\u044f')
sname = models.CharField(max_length=255,verbose_name=u'\u041e\u0442\u0447\u0435\u0441\u0442\u0432\u043e')
email = models.EmailField(max_length=100,verbose_name=u'E-Mail')
phone = models.CharField(max_length=100,verbose_name=u'\u0422\u0435\u043b\u0435\u0444\u043e\u043d')
born = models.DateField()

STATUS_CHOICES = (
('0', u'\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d'),
('1', u'\u041d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439'),
('2', u'\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439'),
('3', u'\u0414\u043e\u043b\u0436\u043d\u0438\u043a'),
('4', u'\u0421\u043e\u0442\u043e\u043d\u0430!'),
)
status = models.CharField(max_length=2, choices=STATUS_CHOICES,verbose_name=u'')
reg_date = models.DateField(auto_now_add=True,verbose_name=u'\u0414\u0430\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438')


def __unicode__(self):
mstr = self.fname + " " + self.lname + " " + self.sname
return mstr



class Comments(models.Model):
id_user = models.ForeignKey(Client)
subject = models.CharField(max_length=100,verbose_name=u'\u0422\u0435\u043c\u0430')
comment = models.TextField(max_length=500,verbose_name=u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435')
post_date = models.TimeField(auto_now_add=True,verbose_name=u'\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f')




class CommentsInline(admin.TabularInline):
model = Comments
extra = 1
#template = "admin/comment_list.html"


class clietnAdmin(admin.ModelAdmin):
#date_hierarchy = 'fname'
list_display = ['__unicode__','status']

fieldsets = [
(u'\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435', {'fields': ['fname','lname','sname','born']}),
(u'\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b', {'fields': ['phone','email','status']}),
]

inlines = [CommentsInline]


admin.site.register(Client,clietnAdmin)
P.S. Ещё интересно, возможно ли отображать TabularInline, грубо говоря как class:collapse? Что то совсем в тупик зашёл ((

Pyramid / Pylons / TurboGears » Вернуть файл » Дек. 9, 2008 10:48:41

Подскажите как вернуть файл клиенту из контроллера?
Скорее всего получится вернуть только потоком, но как не знаю.
положить файл в pubilc нельзя, т.к. он предназначен только определенному клиенту.

Web » Получение данных формы » Дек. 8, 2008 15:24:26

Написал простенький скрипт, который отображает форму:
def index(req):
req.content_type = 'text/html'
main = """<form method="POST">
<input type="text" name="test">
<input type="submit">"""
return main
Как вывести значение поля test?
(использую mod_python)

Django » HTTP-request и не-ascii символы » Дек. 4, 2008 01:21:56

Здраствуйте

При использовании в запросе символов не ascii а например русских букв джанго автоматом конвертит это уникод GET-HTTP запрос например так : (“GET /%D0%BF%D0%BE%D0%BB%D1%8F HTTP/1.1” 404 2386) используя функцию iri_to_url. Но как заставить воспринимать это в urls.py? Здесь нужно как я понял использовать decode и urllib.unquote. То есть как отловить нужный запрос когда в запросе есть не ascii символы?

Спасибо.

GUI » [pygtk] - виртуальный TreeDataStore » Дек. 2, 2008 13:56:38

Есть gtk.TreeView в котором отображается gtk.TreeStore.
Проблема в том, что запрос, возвращающий данные в этот TreeStore возвращает очень много данных.
Поэтому хотелось бы заполнять TreeStrore только теми данными, которые сейчас видны на экране, а оставшиеся данные подгружать по мере скролирования пользователем TreeView.

Вопрос - есть ли готовые механизмы для решения данной задачи или мне целиком самому надо реализовывать данный механизм?

Флейм » RSS Feed for the Python Job Board » Ноя. 27, 2008 16:57:53

The Python.org job board (http://www.python.org/community/jobs/) now
has an RSS feed which can be found at http://www.python.org/community/jobs/jobs.rss
which list the 20 most recent postings in summary form along with a
link to the posting on the jobs page.

The Python.org job board, a free resource for employers and job-
seekers alike, is maintained by volunteers from the Python community.
It is updated several times weekly and lists postings going back as
far as six months from many countries.

Pyramid / Pylons / TurboGears » Названия файлов с кирилицей » Ноя. 26, 2008 05:58:43

Подскажите, пожалуйста, как заставить Pylons выдергивать в браузер файлы с русскими буквами.
Например в public лежит файл “ыыы.doc”, есть на него ссылка, при клике возвращает 404, файлы с латинскими буквами возвращает нормально.

GUI » как из открытой вэбстраници в PyQt4 webkit webview сохранить картинку? » Ноя. 24, 2008 19:51:23

вот например как сохранить картинку google отсюда?
подскажите пожалуйста)))
from PyQt4 import QtWebKit, QtCore, QtGui, QtNetwork
import sys

class Webber(QtGui.QMainWindow):
def __init__(self):
##
self.view = QtWebKit.QWebView()
self.view.setGeometry(100, 200, 800, 500)
self.view.load(QtCore.QUrl('http://www.google.com.ua/'))
self.view.show()
app = QtGui.QApplication(sys.argv)
main = Webber()
sys.exit(app.exec_())

GUI » PyGTK и кодировка » Ноя. 24, 2008 19:26:52

вроде бы в pyGTK все должно быть в юниконе но по чему то если я кидаю в виджет поддерживающий драг н дроп файл в пути которого есть русский язык то получаю нечто подобное:
/%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9/
если точнее то его возвращает data.data из drag_data_received
как это вылечить?
а ну и все дело происходит на винде

Django » Изменение админки » Ноя. 21, 2008 14:48:35

В админке для приложения book создал несколько объектов. Но объекты располагаются в том порядке в котором я их занес туда, а как можно поменять их порядок. Например, как вариант использовать кнопку поднять опустить объект. Подскажите как я могу это сделать?