Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3483 posts.

Django » Error: No module named sql_server.base » Ноя. 17, 2008 21:19:34

Возобновил попытки заставить работать django с MS SQL server. Установил
http://code.google.com/p/django-pyodbc/
установил pyodbc.
если установить
DATABASE_ENGINE = 'sql_server.pyodbc'
получаю
C:\djproject\mysite>manage.py syncdb
Traceback (most recent call last):
File "C:\djproject\mysite\manage.py", line 11, in <module>
execute_manager(settings)
File "C:\Python25\lib\site-packages\django\core\management\__init__.py", line
340, in execute_manager
utility.execute()
File "C:\Python25\lib\site-packages\django\core\management\__init__.py", line
295, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python25\lib\site-packages\django\core\management\base.py", line 77,
in run_from_argv
self.execute(*args, **options.__dict__)
File "C:\Python25\lib\site-packages\django\core\management\base.py", line 87,
in execute
translation.activate('en-us')
File "C:\Python25\lib\site-packages\django\utils\translation\__init__.py", lin
e 73, in activate
return real_activate(language)
File "C:\Python25\lib\site-packages\django\utils\translation\__init__.py", lin
e 43, in delayed_loader
return g['real_%s' % caller](*args, **kwargs)
File "C:\Python25\lib\site-packages\django\utils\translation\trans_real.py", l
ine 209, in activate
_active[currentThread()] = translation(language)
File "C:\Python25\lib\site-packages\django\utils\translation\trans_real.py", l
ine 198, in translation
default_translation = _fetch(settings.LANGUAGE_CODE)
File "C:\Python25\lib\site-packages\django\utils\translation\trans_real.py", l
ine 181, in _fetch
app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:
])
File "C:\Python25\lib\site-packages\django\contrib\admin\__init__.py", line 1,
in <module>
from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL
File "C:\Python25\lib\site-packages\django\contrib\admin\options.py", line 5,
in <module>
from django.contrib.contenttypes.models import ContentType
File "C:\Python25\Lib\site-packages\django\contrib\contenttypes\models.py", li
ne 1, in <module>
from django.db import models
File "C:\Python25\lib\site-packages\django\db\__init__.py", line 34, in <modul
e>
(settings.DATABASE_ENGINE, ", ".join(map(repr, available_backends)), e_user)

django.core.exceptions.ImproperlyConfigured: 'sql_server.pyodbc' isn't an availa
ble database backend. Available options are: 'dummy', 'mysql', 'oracle', 'postgr
esql', 'postgresql_psycopg2', 'sql_server', 'sqlite3'
Error was: No module named sql_server.pyodbc.base
если
DATABASE_ENGINE = 'sql_server'
C:\djproject\mysite>manage.py syncdb
Error: No module named sql_server.base
дайте напутствия как установить этот модуль?

Pyramid / Pylons / TurboGears » smtp_server в ini » Ноя. 16, 2008 01:16:16

В ini файле есть упоминание smtp сервера. Задача стандартная : регистрация на сайте нового пользователя и отправка пароля на его email. Вообще для отправки почты есть в Pylons встроенные механизмы или лучше это делать по другому? Еще вопрос : А чем в Pylons формировать “картинку с циферками” (для контроля регистрации нового пользователя) если такого функционала нет, тогда что использовать? Подскажите плиз.

GUI » QNetworkAccessManager.post ( » Ноя. 10, 2008 22:22:15

http://www.riverbankcomputing.com/static/Docs/PyQt4/html/qnetworkaccessmanager.html#post



QNetworkAccessManager.post (self, QNetworkRequest request, QIODevice data)

This function is used to send an HTTP POST request to the destination specified by request. The contents of the data device will be uploaded to the server.

data must be opened for reading when this function is called and must remain valid until the finished() signal is emitted for this reply.

The returned QNetworkReply object will be open for reading and will contain the reply sent by the server to the POST request.

Note: sending a POST request on protocols other than HTTP and HTTPS is undefined and will probably fail.


QNetworkAccessManager.post (self, QNetworkRequest request, QByteArray data)

This is an overloaded member function, provided for convenience.

This function sends the contents of the data byte array to the destination specified by request.






Подскажите пожалуйста, как сформировать запрос на заполнение двух полей формы(user и pass)// я никак не могу понять, какой QByteArray или QIODevice надо сделать.. ((

Django » Элементы django-admin в пользовательской части сайта » Ноя. 9, 2008 23:53:52

Как можно вставить автоматически сгенерированный CRUD интерфейс в “обычную” часть сайта? Т.е. я например кастомизирую через admin.py внешний вид CRUD интерфейса и потом его просто вставляю для какого-то одного элемента модели. Такое возможно?

GUI » QtWebKit.QWebPage() //// click on link or button// or do something.. » Ноя. 9, 2008 21:11:07

class Webber(QtGui.QMainWindow):
def __init__(self,cookieFile):

QtGui.QMainWindow.__init__(self)
self.resize(800,600)

quit = QtGui.QPushButton('Cookies', self)
quit.setGeometry(10, 10, 60, 35)
self.connect(quit, QtCore.SIGNAL('clicked()'),self.printer)
cj = cookielib.LWPCookieJar()
if os.path.isfile(cookieFile):
cj.load(cookieFile)
self.view = QtWebKit.QWebView(self)
self.page=QtWebKit.QWebPage()
self.manager=QtNetwork.QNetworkAccessManager()
self.cj=QtNetwork.QNetworkCookieJar()
self.manager.setCookieJar(self.cj)
#manger.setProxy(QtWebKit.QNetworkProxy)
self.page.setNetworkAccessManager(self.manager)
self.view.setPage(self.page)

self.view.setGeometry(100, 200, 500, 300)
self.view.load(QtCore.QUrl('http://www.google.com.ua/'))
self.view.show()
def printer(self):
print self.cj.allCookies()
помоги пожалуйста,
можно ли и как чтото ввести в поле ввода и нажать кнопку поиск прям из программы,?
если да, то с помощью чего,?
з.ы. я читал справку.. но не нешел того, что надо.

GUI » Справка в PyGTK-приложении » Ноя. 8, 2008 09:32:30

Интересует такая тема. Создание справки к приложению, написанному на PyGTK (GTK+). Приложение работает как на Linux так и на Windows.

Есть ли какие-то стандартные инструменты, виджеты, может быть? Привязка к Gnome или еще к чему не самое лучшее решение, как вы понимаете, ведь в таком случае придется делать отдельную реализации для винды. Сам вообще никогда не занимался созданием пользовательской помощи к своим не многочисленным программам, для меня это что-то совершенно новоё.

Вам приходилось решать такую задачу, как вы поступали? Писали свой код для окна справки и навигации по ней? А быть с контекстной помощью? Сейчас интересует только PyGTK.

..bw

Web » применение make_msgid » Ноя. 7, 2008 17:32:13

У кого есть практический пример применения msgid
из django.core.mail. (…) def make_msgid(idstring=None):

функция генерирует что то типа этого : ‘<20081107152444.10520.11691@r>’
в доке написано что это уникальный идентификатор также читал о msgid http://ru.wikipedia.org/wiki/MSGID но мне пока непонятно его назначение. Или это только для фидо нет нужно ,?

Спасибо

GUI » Подкорректируйте пример gui-application » Ноя. 1, 2008 16:23:02

Привет коллегам!
Есть небольшой пример вьювера цифровых изображений (из книжки “WxPython in action”)
Ниже пример кода:
#!/usr/bin/python
"""Hello, wxPython! program."""
import wx
class Frame(wx.Frame):
"""Frame class that displays an image."""
def __init__(self, image, parent=None, id=­1,
pos=wx.DefaultPosition,
title='Hello, wxPython!'):
"""Create a Frame instance and display image."""
temp = image.ConvertToBitmap()
size = temp.GetWidth(), temp.GetHeight()
wx.Frame.__init__(self, parent, id, title, pos, size)
self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)

class App(wx.App):
"""Application class."""
def OnInit(self):
image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = Frame(image)
self.frame.Show()
self.SetTopWindow(self.frame)
return True

def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()
При попытке “заранить” скрипт, получаю следующий output:

Traceback (most recent call last):
File “start1.py”, line 33, in <module>
main()
File “start1.py”, line 29, in main
app = App()
File “/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode/wx/_core.py”, line 7836, in __init__
self._BootstrapApp()
File “/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode/wx/_core.py”, line 7433, in _BootstrapApp
return _core_.PyApp__BootstrapApp(*args, **kwargs)
File “start1.py”, line 24, in OnInit
self.frame.Show()
AttributeError: ‘App’ object has no attribute ‘frame’


Кто-то сможет его прокоментировать?
PS: “ногами не бить”, только добрался до этого самого wxPython-a :)

Web » Помогите оценить разработку сайта - нужен веб дизайнер » Окт. 27, 2008 04:30:54

Помогите оценить сколько стоило бы создать сайт похожий своей функциональностью на http://www.hightechhire.com. Особенно важен их способ публикации гугл рекламных линков, которые при нажатии плавно переходят на новую страницу.

Ищу веб дизайнера/программера для похожего проекта.

Python для экспертов » С-расширения и SWIG. С-функция не хочет делиться. » Окт. 24, 2008 12:39:34

Здравствуйте
Решил попробовать написать С-расширение при помощи SWIG. ( у меня openSUSE 10.3)
Оговорюсь сразу: helloSWIG.c и potok.c мне удалось собрать.
potok.c: Что делает - запускается с -поток , 3 раза печатает си-поток( с интервалом в 1 секунду), затем поток завершается, запускается с-процесс, 3 раза печатается си-процесс, процесс завершается.

Файл: potok.c
/* potok.c */
#include <stdio.h>
#include <pthread.h>
#include <signal.h>
pthread_t potok_id;

void * mypotok()
{
while (1) { fprintf(stderr,"СиПоток\n"); sleep(1); }
}
void pusk() {

pthread_create(&potok_id,NULL,&mypotok,NULL);
sleep(3);

pthread_cancel(potok_id);
if( !pthread_equal( pthread_self(),potok_id ) )
{
printf("\n%d\n", pthread_equal( pthread_self(), potok_id ));
fprintf(stderr,"поток завершен\n");
pthread_join(potok_id,NULL);
}
int i;
for (i=0; i<3; i++) {
fprintf(stderr,"СиПроцесс\n"); sleep(1);
}
}
Файл: potok.i
%module potok
%include potok.c
Далее:
swig -python potok.i
И наконец компилирую и связываю:
gcc -shared potok.c potok_wrap.c -o _potokmodule.so -I/usr/include/python2.5 -DHAVE_CONFIG -I/usr/lib/python2.5/config

Запускаю python:
>>> import potok
>>> potok.pusk()
СиПоток
СиПоток
СиПоток

0
поток завершен
СиПроцесс
СиПроцесс
СиПроцесс
>>>
То есть - все нормально, все работает.

Пробую разбить функцию void pusk() на составляющие - void start(), void finish, void pusk()
 /* Npotok.c */
#include <stdio.h>
#include <pthread.h>
#include <signal.h>
pthread_t potok_id ; /* идентификатор потока */

void * mypotok()
{
while (1) { fprintf(stderr,"СиПоток\n"); sleep(1); }
}
void start()
{
pthread_create(&potok_id,NULL,&mypotok,NULL);
}
void finish()
{
pthread_cancel(potok_id);
if( !pthread_equal( pthread_self(),potok_id ) )
{
printf("\n%d\n", pthread_equal( pthread_self(), potok_id ));
fprintf(stderr,"поток завершен\n");
pthread_join(potok_id,NULL);
}
}
void pusk()
{
start();
sleep (3);
finish();
int i;
for (i=0; i<3; i++) {
fprintf(stderr,"СиПроцесс\n"); sleep(1);
}
}
Пытаюсь собрать( все как выше делал):
~> gcc -shared Npotok.c Npotok_wrap.c -o _Npotokmodule.so -I/usr/include/python2.5 -DHAVE_CONFIG -I/usr/lib/python2.5/config

Выдает:
Npotok_wrap.c: In function ‘potok_id_set’:
Npotok_wrap.c:2494: error: ‘potok_id’ undeclared (first use in this function)
Npotok_wrap.c:2494: error: (Each undeclared identifier is reported only once
Npotok_wrap.c:2494: error: for each function it appears in.)
Npotok_wrap.c: In function ‘potok_id_get’:
Npotok_wrap.c:2506: error: ‘potok_id’ undeclared (first use in this function


Почему ? Что ей надо ? Может кто-нибудь подобное делал ? ( под Windows может быть?)


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

GUI » wxPython: wx.ListCtrl (как листать на нужную строку) » Окт. 22, 2008 11:14:57

Создаю wx.ListCtrl получаю данные из базы данных и отображаю, выделяю нужную строку через
self.ctrl.SetItemState(row_id,wx.LIST_STATE_SELECTED,wx.LIST_STATE_SELECTED)
Строка отмечается и в форме достаточно просто её пользователю найти. Но вот если список wx.ListCtrl достаточно длинный, то пользователю приходится прокручивать список в поисках этой отмеченной строки. Можно ли прокрутить список так чтобы пользователь сразу видел нужную строку?

Web » mod_python на виртуальном хосте » Окт. 21, 2008 13:05:01

Добрый день!

У меня есть дедик на котором установлен Apache2 и работает несколько пректов реализованных на PHP.
Есть желание запустить там же Django под mod_python.

В принципе мне удалось поднять работающую конфигурацию (см. ниже), но поскольку совершенно нет опыта
работы с mod_python и Django хотелось уточнить насколько безопастно сосуществование Python и PHP проектов?

<VirtuallHost *>

ServerName mysite

DocumentRoot /var/web/django/mysite

<Directory “/var/web/django/mysite/”>
allow from all
options Indexes FollowSymLinks
</Directory>

<Location “/”>
SetHandler python-program

PythonPath " + sys.path“
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
SetEnv PYTHON_EGG_CACHE /tmp/.python-eggs
PythonDebug On
</Location>

Alias /media /var/web/django/mysite/media
Alias /admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media

<Location ”/media“>
SetHandler None
</Location>

<Location ”/admin_media“>
SetHandler None
</Location>

<LocationMatch ”\.(jpg|gif|png)$">
SetHandler None
</LocationMatch>

</VirtualHost>

Django » extra_context и **kwargs » Окт. 19, 2008 16:01:53

Hi
Просьба скажите в каких случаях более применима
extra_context a в каком **kwargs
например в
urls.py можно писать так
(r'^$', 'django.views.generic.simple.direct_to_template', {
'template': 'base.html',
'extra_context' : {'title':'Main page',},
'title' : ''Main page',
}),
в темплатйте пишу:
<title>{{ title }}</title>
<p>{{ params.title }}</p>
Эффект одинаков -extra_context и **kwargs выводят значения а в чем разница их приминения?


Спасибо

Python для новичков » забить ошибку в переменную » Окт. 14, 2008 19:22:37

как так сделать чтоб:
def a()
try:
…..code that raise error
except …:

return k

k - полный текст проблемы который выдал питон


как такое сделать,?

Mobile Python » Дерево для S60 » Окт. 14, 2008 11:02:44

Доброго времени суток.

Выкладываю код дерева.
Код еще очень сырой и некоторые вещи не работаю (например скролл бар, что-то руки до него не доходят).
И вообще, подозреваю, что сам по себе код довольно кривой, много что поправить надо. Но сильно не бейте, пол года назад я вообще не знал что такое программирование (у нас в медакадемии только мс аксесс был, который я как не понимал, так и не понимаю). Так что за критику и указание на ошибки буду благодарен :)
И код пока без коментариев :( (знаю, писать надо, и даже собрался)

Архив содержит py файл с кодом и битмапки, которые надо помести по адресу:
ICONS_PATH = u'C:\\Data\\python\\pytree\\'
или же поменять этот адрес в исходнике.

py файл содержит сам контрол и пример его использования (добавляется дерево, обрабатываются кнопки)
по порядку:

Главный класс pyTreeControl
Он создает конву для рисования себя и методом control возвращает эту конву
basic = pyTreeControl(None, user_callback = key_callback) # название basic  осталось от примера на основе которого делал, но это не важно
appuifw.app.body = basic.control()
user_callback - функция, которая будет вызываться при нажании клавиатуры и будет принимать event, который есть словарь
сам pyTreeControl обрабатывает 4 клавиши (верх - перемещение фокуса вверх, низ - перемещение вниз, право - открыть текущую ветку, лево - закрыть текущую ветку)

Опции pyTreeControl (некоторые поясню):

scroll_bar_width = 5
scroll_bar_type = u'none' # u'always', u'auto'
border_width = 0
level_shift = 7 # смещение уровня относительно своего родителя (пикселей)
tree_shift_h = 4 № отступ от левого края (пикселей)
element_space = 3 # расстояние между элементами строки
draw_hierarchy = True # рисовать линии иерархии?
padding_text = u'…' # текст, который будет добивать строку, которая не входит в контролл полностью

font_height = 18
font_name = u'normal'
font_flags = graphics.FONT_ANTIALIAS

marker_bitmap = u'MARKER' # тип битмапки для обозначение выделенного элемента (а типах и о работе с битмапами ниже)
open_bitmap = u'OPEN' # битмапка для обозначение открытой ветки ()
close_bitmap = u'CLOSE' # битмапка для обозначение закрытой ветки ()

bg_color = 0xD0D0D0 # цвет фона

outline_color = 0x0000FF # цвет линии (выделенной)
fill_color = 0xC3D9FF # цвет заполнения

item_color = 0x505050 # цвет текста элемента
mark_item_color = 0xBB5050 #цвет текста выделенного элемента

padding_color = 0xFF0000 # цвет текста padding_text

hier_color = 0x000000 # цвет линий иерархии
hier_select_color = 0xBB5050 # цвет линии иерархии, если элемент этого уровня иерархи выделен (делал только для отладки, потом оставил - понравилось :))
border_color = outline_color # цвет бордюра, думаю, это уйдет, потому что бордюр тоже переделать надо

при изменении одного из этих параметров нужно вызывать pyTreeControl.redraw() НО!!! после изменения параметров scroll_bar_width, border_width, font_* нужно вызывать pyTreeControl.reinit(), чтобы все пересчитать. Можно вообще только reinit() вызывать, но redraw быстрее, оно просто перерисовывает, не пересчитывая
Конструктор pyTreeControl принимает так же еще и размеры контрола и его координаты (это на будущее сделано, есть идея кой - какая) gj по умолчанию - полная клиентская область с координатами (0, 0).

Второй по величине класс - cTreeOssa (Ossa (лат.) - скелет)
Этот класс собержит в себе информацию о структуре дерева. Свой уровень, тип, имя, полный путь от первого родителя, описание, состояние (открыт/зарыт, отмечен/не отмечен)

именно экземпляр этого класса нужно передать в pyTreeControl либо при создании:
tree = cTreeOssa(u'----')
controll = pyTreeControl(tree, user_callback = key_callback)
либо после создания методом set_tree(tree)
basic.set_tree(tree) # после этого вызова контрол сам перерисует дерево
стоит отметить, что самый верхний уровень дерева (0 уровень) (элемент с именем u'—-' в примере) не прорисовывается, все начинается с его потомков (1 уровня)

То есть контрол может динамически менять дерево для отображения. (при добавлении дерева контрол переустанавливает ему уровни cTreeOssa.set_level()).


удалять дерево нужно в 2 этапа
сначла нужно вызывать метод del_branch() очистит всех потомков, только потом del test

Битмапы:
За битмапы отвечает класс cBitmapReserv
в конструктор он принимает путь и словарь с описание битмапов.
в описании словарь: {тип: (имя файла, создать для битмапы маску?)}

тип - это тот самый тип дерева, который соджержит cTreeOssa
2 параметр кортежа - True или False обозначает нужно ли создать маску для битмапы. Если маска нужна, то создается, используя цвет (255, 0, 255) (это поправлю, чтоб параметром было)
Пока pyTreeControl сам создает экземпляр cBitmapReserv, что не очень хорошо (тоже поменяю). так же cBitmapReserv не может пока дополнять словарь с битмапами.
Теперь контрол, при отрисовке элемента, спрашивает у cBitmapReserv картинку нужного типа и тот ему ее возвращает вместе с маской, если такая есть. картинки создаются из словаря не сразу, а только при первом запросе. Если картинки определенного типа не нашлоcь, возвращается дефолтная битмапа (с типом u'')

в примере приведен key_callback:
'*' - делает скриншот контрола (сохраняется в u'C:\\Data\\python\\')
'0' - добавляет элемент 1-ого уровня в дерево контролла
'#' - добаляет элемент в текущее дерево (выделенный элемент) (если находит в имени ‘:-)’ делает элемент смайликом, иначе просто дефолтным листом и устанавливает текущий элемент в тип “DIR”, чтоб так синяя папка отрисовывалась)
'C' - удаляет текущий элемент из дерева
'1', ‘2’ - увеличивает/уменьшает высоту шрифта
'4', ‘6’ - увеличивает/уменьшает ширину границы контрола
'5' - переименовывает текущий элемент

Так, вроде все. Если что еще вспомню – допишу. Будут вопросы - спрашивайте.
Все изменения и дополнения буду отмечать в этой теме.


почему файлы не цепляются? куда архив можно выложить?

файл выложил тут http://slil.ru/26234856
модераторы, может прицепите его к теме?

Python для экспертов » Помогите с вложенными списками » Окт. 10, 2008 10:26:47

В статье http://python.su/blog/public/2008/09/17/poluchenie-kontenta-ierarhicheskoj-strukturyi/ очень доступно написано о формировании XML-деревьев
А как это сделать во вложенные списки из таблицы типа
ID, Parent_ID,Node
tree=[,,,,] и тд.
Преобразование таблицы в дерево описано
http://python.su/blog/public/2008/09/17/preobrazovanie-tablitsyi-v-derevo/
Я что-то полностью зациклился…
Спасибо…

GUI » wx. Виртуальное дерево » Окт. 8, 2008 10:23:58

Всем привет. есть такой код:
# -*- coding: cp1251 -*-
import wx
from wx.lib.mixins import listctrl

import locale
locale.setlocale(locale.LC_ALL,'Russian_Russia.1251')

import wx.lib.customtreectrl, wx.gizmos
from wx.lib.mixins import treemixin
from random import randint
class VirtualTreeListCtrl(treemixin.VirtualTree, wx.gizmos.TreeListCtrl,listctrl.ListCtrlAutoWidthMixin):
''' View:Виртуальное дерево
'''
def __init__(self, *args, **kwargs):
''' Виртуальное дерево
'''
self.model = kwargs.pop('treemodel')
kwargs['style'] = wx.TR_DEFAULT_STYLE | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_ROW_LINES | wx.TR_COLUMN_LINES

super(VirtualTreeListCtrl, self).__init__(*args, **kwargs)
listctrl.ListCtrlAutoWidthMixin.__init__(self)

size = (16, 16)
self.imageList = wx.ImageList(*size)

self.red16 = self.imageList.Add(wx.Bitmap('red16.gif', wx.BITMAP_TYPE_GIF))
self.silver16 = self.imageList.Add(wx.Bitmap('silver16.gif', wx.BITMAP_TYPE_GIF))
self.green16 = self.imageList.Add(wx.Bitmap('green16.gif' ,wx.BITMAP_TYPE_GIF))
self.ivory16 = self.imageList.Add(wx.Bitmap('ivory16.gif' ,wx.BITMAP_TYPE_GIF))

self.AssignImageList(self.imageList)
columns = ['0','1','2','3','4','5','6']
for item in columns:
self.AddColumn(item[0])

def UpdateAllData(self):
''' обновить данные в модели.
'''
self.model.UpdateAllData()
self.RefreshItems()

def OnGetChildrenCount(self,indices):
return self.model.GetChildrenCount(indices)

def OnGetItemBackgroundColour(self,indices):
if indices[0] % 2 == 0:
return wx.Colour(207,229,255)
if indices[0] % 2 == 1:
return wx.Colour(217,255,237)

def OnGetItemText(self, indices, column=0):
return '%s' % (self.model.GetText(indices,column))

def OnGetItemImage(self, indices, which, column=0):
''' вернуть имидж в колонке
'''
return -1

class TreeModel(object):
''' Model:Модель обеспечивающая данные для виртуального дерева
'''
def __init__(self, *args, **kwargs):
self._DoSort()
super(TreeModel, self).__init__(*args, **kwargs)
self.k = 0

def UpdateAllData(self):
self._DoSort()
def GetItem(self, indices):
return self.jobs[indices[0]][0]

def _DoSort(self):
self.orig_items = []
count = 1000
for i in xrange(count):
a = [i,]
for i in xrange(6):
a.append(randint(0, 1000))
self.orig_items.append(a)
self.jobs = self.orig_items
def GetText(self, indices,column):
""" Запрос отображения строки, колонки
"""
return self.jobs[indices[0]][column]

def GetChildren(self, indices):
return "GetChildren"

def GetChildrenCount(self, indices):
try:
self.jobs
except:
return 0
if indices == ():
return len(self.jobs)
else:
return 0
class Job2Panel(wx.Panel):
def __init__(self, parent):
super(Job2Panel, self).__init__(parent)
self.treemodel = TreeModel()
sizer = wx.BoxSizer()
self.tree = VirtualTreeListCtrl(self,treemodel=self.treemodel)
sizer.Add(self.tree, proportion=1, flag=wx.EXPAND)
self.SetSizer(sizer)
# #зарядка дерева
self.tree.RefreshItems()
self.tree.SetFocus()
def UpdateAllData(self):
self.tree.UpdateAllData()

class App(wx.App):
def __init__(self):
wx.App.__init__(self, True, 'log.txt')
frame = wx.Frame(None, size=(800, 500))
frame.panel = Job2Panel(frame)
self.SetTopWindow(frame)
frame.Show()

if __name__ == "__main__":
app = App()
app.MainLoop()
и это должно быть виртуальным деревом. вроде как виртуальное дерево должно посылать запрос в GetText() только для видимых строк и колонок (по аналогии с виртуальным списком). мое же дерево запрашивает сразу все элементы, из-за этого долгая зарядка дерева при большом количестве элементов.
может кто-нибудь знает в чем причина такого поведения? или я неправильно его создаю? или, может быть, у wx оно только называется виртуальным? как можно ускорить загрузку?

Флейм » django - code_swarm » Окт. 7, 2008 02:13:40

http://oebfare.com/blog/2008/jun/24/django-code_swarm/
Всем рекомендую посмотреть, очень прикольно :)

Web » Проблема при работе с Google Apps Engine » Окт. 6, 2008 18:16:14

Значится проблема при работе с Google Apps Engine и модулем feedparser.
Проблему описал вот тут.
Извините за подобный плохой вид поста, просто так быстрее. Буду очень благодарен за содействие.

GUI » [Gtk] - Еще пара вопросов по gtk.treeview » Окт. 3, 2008 11:03:02

1. А могу ли я к каждой строке treeview прицепить какой то объект, чтобы после, выделив какую-ту строку я мог получить не только содержимое столбцов treeview, но и этот прикрепленный объект? Я понимаю, что можно завести сбоку отдельно dict этих объектов, но может есть что-то встроенное ?

2. А есть ли в Python/Gtk какой-нибудь автоматизированны binding? То есть, сейчас я считываю данные из СУБД, порождаю коллекцию объектов и каждый объект отобажаю в соответствую строку:

    def createDataModel(self):
self.treestore = gtk.TreeStore(str, str, int, int, int)
for product in Product.query.all():
self.treestore.append(None, [product.name, product.category, product.fat, product.protein, product.carbo])
return self.treestore
А можно ли, настроить маппинг переменных объекта на столбцы treestore один раз, а потом уже передавать в append (или его аналог) сам объект? Или надо писать свой велосипед?