Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3484 posts.

Python для новичков » Анимированный случайный график в Matplotlib. » Июль 15, 2010 12:40:33

Вот простейшая программка, которая случайно выдаёт числа, близкие к предыдущими:

import random
import time

def values(range_start, range_end, init_value=0):
while 1==1:
init_value += random.randrange(range_start, range_end)
yield init_value
time.sleep(1.5)

for val in values(-20.0, 20.0, 1000.0):
print val


Вопрос: как сделать так, чтобы строился график по выдаваемым числам? Что отвечает за рандом в Matplotlib?

P.S. Как бы сделать не int, а float, чтобы выдавались ещё и доли?

Базы данных » mysqldb select -баг? » Июль 15, 2010 12:40:33

Привет.

Столкнулся с небольшой проблемой при написании скрипта. Грубо говоря, требуется проверить существование строки с определенными параметрами в таблице, если существует - вернуть ее id, если не существует, добавить ее.
Вариант с INSERT внутри IF, как я понимаю, работать не будет, поэтому приходится делать костыль.

код следующий:
#!/usr/local/bin/python

import MySQLdb

ConvDB = MySQLdb.Connect(host="1.1.1.1", user="123", passwd="123", db="somedb")
ConvDBcursor = ConvDB.cursor()

query="SELECT id from sometable WHERE somethng=63"
print query
ConvDBcursor.execute(query.decode('cp1251').encode('utf8'))
print ConvDBcursor.rowcount
ConvDBcursor.close()
ConvDB.close()
Возвращается нечто вроде

1
((18L,),)

Хотя таблица sometable вообще пустая.

PS python 2.6.3, mysqldb 1.2.3c1, Win7. При этом на FreeBSD такой проблемы нет

GUI » Save gtk.DrawingArea to file » Июль 15, 2010 12:39:37

Маю http://pygstdocs.berlios.de/pygst-tutorial/webcam-viewer.html . Хочу картинку self.movie_window зберегти в photo.jpg за допомогою PIL. Як це зробити?

EDIT: Знайшов http://faq.pygtk.org/index.py?req=show&file=faq08.014.htp . Основна проблема для мене як витягнути pixbuf з gtk.DrawingArea?

GUI » wxPython: Как перенести объект в отдельное окно? » Июль 12, 2010 17:20:29

Методом научного тыка не получилось, но мне нужно, чтобы панель с создаваемым рисунком была в одном окне, а элементы управления в другом. Я это делаю для того, чтобы пользователь мог устанавливать максимальный размер картинки, какой ему только позволит монитор, и чтоб при этом окно настроек не мешало. Для примера прилагаю код с одним единственным слайдером.
Может, кто-нибудь подскажет, как это сделать, чтоб слайдер был в одном окне, а полотно в другом окне?
#!/usr/bin/python



# cpu.py



import wx

import math

import wx.lib.wxcairo



class CPU(wx.Panel):

def __init__(self, parent, id):

wx.Panel.__init__(self, parent, id, size=(600, 600))

self.parent = parent

self.SetBackgroundColour('#FBFF05')

self.Bind(wx.EVT_PAINT, self.OnPaint)



def OnPaint(self, event):



dc = wx.PaintDC(self)

w,h = dc.GetSizeTuple()

cr = wx.lib.wxcairo.ContextFromDC(dc)



pos = self.parent.GetParent().GetParent().sel

rect = pos



cr.set_line_width (10)

cr.set_source_rgba(1, 0, 1, 1)

cr.move_to(20, 20)

cr.line_to(380, rect)



cr.stroke()





class CPUWidget(wx.Frame):

def __init__(self, parent, id, title):

wx.Frame.__init__(self, parent, id, title, size=(800, 600))



self.sel = 0



panel = wx.Panel(self, -1)

centerPanel = wx.Panel(panel, -1)



self.cpu = CPU(centerPanel, -1)



hbox = wx.BoxSizer(wx.HORIZONTAL)

self.slider = wx.Slider(panel, -1, self.sel, 0, 400, (20, 20), (25, 500),

wx.VERTICAL | wx.SL_LABELS | wx.SL_INVERSE)

self.slider.SetFocus()



hbox.Add(centerPanel, 0, wx.LEFT | wx.TOP, 20)

hbox.Add(self.slider, 0, wx.LEFT | wx.TOP, 23)





self.Bind(wx.EVT_SCROLL, self.OnScroll)



panel.SetSizer(hbox)



self.Centre()

self.Show(True)





def OnScroll(self, event):

self.sel = event.GetInt()

self.cpu.Refresh()





app = wx.App()

CPUWidget(None, -1, 'cpu')

app.MainLoop()

GUI » Reload Gnome applet после изменения настроек » Июль 11, 2010 22:13:57

Добрый день
Написал я тут небольшой апплет и даже прикрутил к нему окно с настройками, которые хранятся в gconf.
Но возникла проблема.
Так как настройки считываются при инициализации апплета, то изменения вступают в силу только после перезагрузки панели :(
Подскажите какие есть методы перезагрузки апплета? (я так понимаю, нужно снова вызвать __init__)

Web » python seo » Июль 8, 2010 20:52:24

Кто нибудь знает библиотеки для работы с seo? определение тиц pr индексации як и т.п.

Django » Проблема при развертывании Apache + mod_python » Июль 8, 2010 13:20:25

Приветствую..

Столкнулся с такой проблемой: проект развернут на веб-сервере Apache+mod_python, все работает, но:
сайт доступен не только по адресу “host/”, но и по адресу “host/code_dev/”, где code_dev в моем случае - это имя папки проекта. При этом работает совершенно нормально.

Все бы ничего, можно в апаче этот путь посадить в SetHandler: None, но при использовании функций permalink или reverse в джанго она разворачивает путь именно с именем проекта.. Я явно что-то напортачил в конфиге апача. но что именно не пойму.

Конфиг апача:

MaxRequestsPerChild 1
<VirtualHost *>
DocumentRoot /home/exezed/work/code_dev
ServerName localhost

<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE settings
PythonOption django.root /code_dev
PythonDebug On
PythonPath "['/home/exezed/work/code_dev'] + sys.path"
</Location>

</VirtualHost>
Сам проект находится в /home/exezed/work/code_dev/
И Settings.py, соответственно, /home/exezed/work/code_dev/settings.py

Где косяк?.. Спасибо.

GUI » PyGtk windows7x64 python 3.1 » Июль 5, 2010 12:57:13

нужна возможность писать приложения на питоне с гуи.
сейчас пишу через эклипс с использованием ткинтер
хочется попробовать PyGt + Glade
но как-то ставиться сиё чудо не хочет
скачал с http://www.pygtk.org/downloads.html архив “gtk+-bundle_2.20.0-20100406_win64.zip” и распаковал в папку питона
glade оттуда же
glade вообще ругается “Точка входа в процедуру g_assertion_message” не найдена в библиотеке DLL libglib-2.0-0.dll

Флейм » Eclipse(Python) » Июль 4, 2010 08:21:13

Есть ли видео-уроки, или книги по Eclipse PyDev (Python)?
Если книгу, то на русском, видео-уроки можно на любом языке.

GUI » Окно GUI а-ля screenlets (Linux) » Июль 3, 2010 23:49:48

День добрый!
Подскажите в какую сторону копать?
Задача - сделать оповещение о каком-либо событии с помощью анимированного персонажа, что бы он находился на рабочем столе в виде просто некоей фигурки - без отдельного окна. Примерно как организовано в screenlets - на скрине в аттаче образец.
Спасибо!
P.s. вроде как такая фича называется screenmate?

Django » Помогите настроить Apache+mod_wsgi для домашнего девелопмента » Июль 3, 2010 21:02:04

Здраствуйте. Знаю, что подобные вопросы поднимались, и мною лично были изучены (как на русском так и на английском), но толи я тупой, толи лыжи не едут.
Итак, что мы имеем:
ОС: Windows 7
Python: 2.6
Django: 1.1.2
Apache: 2.2
mod_wsgi: соответствующий вышеописанному

До установки сервера, все чудесно работало на встроенном. Но, как вы понимаете, это не надолго, поэтому я решил уже на нормальный сервер сесть.
В качестве будущего хостинга хочу использовать джино. Там, как я понял есть выбор mod_python или mod_wsgi.
Почитав доки, выбор пал на mod_wsgi.
Ставлю апаче, все запускается ОК. Ложу в /modules mod_wsgi.so
Пишу в конфигах LoadModule wsgi_module modules/mod_wsgi.so
Рестарт.
Ну и собственно проблема:
Cannot load C:/Program Files/Apache Software Foundation/Apache2.2/modules/mod_wsgi.so into server … (и тут в юникоде что то)
Note this errors or messages above …

Вот таки дела, я уже его и так и этак. Может на семерке вообще нельзя развернуть такую связку. Но если все-таки можно, пожалуйста, подскажите как
п.с. apache ставил и с ssi и без (если важо). Вообще первый раз настраиваю сервер …

GUI » Tkinter: Treeview показывает не все записи » Июль 2, 2010 15:55:14

Всем доброго!
После долгого использования MultiListBox в качестве таблицы для записей решил перейти на Treeview что под ttk. Ну и возникла проблема использования самого виджета, а именно запускаю скрипт а он выводит мне не все записи из базы. Копирую этот же select в MultiListBox все работает нормально. Прилагаю свой код c использованием ttk.Treeview.
#-*- coding:utf-8 -*-
from Tkinter import *
import sqlite3
import ttk
from PIL import Image, ImageTk
c = sqlite3.connect(database=r"avto.sdb")
cu = c.cursor()

root = Tk()
root.wm_title("multicolumn ListBox")
fr = ttk.Frame(root)
fr.pack()


# Определяем таблицу Treeview
tablegas = ttk.Treeview(fr, show='headings', selectmode='browse', height=10)

# Даем заголовки колонкам
tablegas["columns"]=("date","avtopart","namepart","numpart","mileage","brand","cost","sto","tools","komment")

tablegas.heading("date", text=u"Дата", anchor='w')
tablegas.heading("avtopart", text=u"Часть авто", anchor='w')
tablegas.heading("namepart", text=u"Наименование ремонта", anchor='w')
tablegas.heading("numpart", text=u"Номер детали", anchor='w')
tablegas.heading("mileage", text=u"Пробег", anchor='w')
tablegas.heading("brand", text=u"Фирма", anchor='w')
tablegas.heading("cost", text=u"Стоимость ремонта", anchor='w')
tablegas.heading("sto", text=u"Место ремонта", anchor='w')
tablegas.heading("tools", text=u"Инструмент", anchor='w')
tablegas.heading("komment", text=u"Комментарии", anchor='w')

tablegas.column("date", stretch=0, width=70)
tablegas.column("avtopart", stretch=0, width=90)
tablegas.column("namepart", stretch=0, width=90)
tablegas.column("numpart", stretch=0, width=90)
tablegas.column("mileage", stretch=0, width=80)
tablegas.column("brand", stretch=0, width=100)
tablegas.column("cost", stretch=0, width=90)
tablegas.column("sto", stretch=0, width=80)
tablegas.column("tools", stretch=0, width=100)
tablegas.column("komment", stretch=0, width=100)


sel = 'SELECT date, avtoparts, namerepair, numberparts, mileage, brand, cost, sto.place as "СТО" FROM repair, sto WHERE sto.ID = repair.sto'
cu.execute(sel)
for item in cu.fetchall():
tablegas.insert('', 'end', values=item)

scroll = ttk.Scrollbar(fr)
tablegas.config(yscrollcommand=scroll.set)
scroll.config(command=tablegas)
scroll.grid(row=0, column=1, sticky=N+S)

tablegas.grid(column=0, row=0, sticky='nsew')
Style = ttk.Style()
ttk.Style.theme_use(Style, "clam")
mainloop()
c.close()

Python для экспертов » python+opengl » Июнь 27, 2010 06:28:33

здравствуйте,недавно пришлось столкнуться с графикой в питоне и как оказалось документации по этому делу весьма и весьма мало,подскажите как в opengl создать каркасный куб?

Инструментальные средства разработки » Eric5 » Июнь 26, 2010 19:52:49

приветствую всех.

успешно установил питон 3.1.2
и ерик5.

в эрике, зашел в меню project/new создал проект test

создался файл __init__.py

в нем я написал print(“Hi”);

далее запустил из start/run script и ни чего не произошло.

выдал чушь какую-то
Traceback (most recent call last):
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClient.py”, line 38, in <module>
debugClient.main()
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClientBase.py”, line 1903, in main
self.__interact()
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClientBase.py”, line 962, in __interact
self.eventLoop()
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClientBase.py”, line 990, in eventLoop
self.readReady(self.readstream.fileno())
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\AsyncIO.py”, line 66, in readReady
self.handleLine(s)
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClientBase.py”, line 754, in handleLine
socket.gethostname(), self.variant))))
UnicodeDecodeError: ‘utf8’ codec can't decode bytes in position 0-1: invalid data


как запустить и что делать?

Django » django-cms, передача параметров » Июнь 18, 2010 15:00:48

Решил добавить на свой сайт сделанный на django-cms страничку с flash играми.
Сделал плагин который из базы выводит список игр все Ок.
Теперь надо сделать так что бы при клике на игру показывалась страница с игрой.

Добавил в cms раздел страницу и убрал у нее признак отображения в меню.
На ней разместил плагин который отображает игру ипо параметру id игры.

Затупил на том как передать id игры из странички со списком игр, на страничку с игрой.

Подскажите плиз как это лучше сделать… Может я в принципе неправильно общую схему работы сделал ?

На чистой джанге было проще, там я через urls разрулил передачу параметра…
А как в CMS это сделать нифига непонятно…

Python для новичков » Ctypes WinDLL не открывает библиотеки » Июнь 16, 2010 17:32:35

Доброго времени суток! Столкнулся со следующей проблемой:
ОС - Windows XP Professional SP2 х86(это ещё не сама проблемма, хотя… ;) )
Есть проект, написанный на С и собранный при помощи MS Visual Studio 2005 (8.0). В рамках проекта собраны несколько dll'ек, которые необходимо зацепить из питона.
Скачал и поставил питон 2.5(требование заказчика). Качал вот отсюда http://www.python.org/ftp/python/2.5/python-2.5.msi.

Далее, пытаемся открыть собранную библиотеку следующим образом:
import ctypes
mylib = ctypes.WinDLL('D:\\dir\\with\\project\\library.dll')

На что получаем окошко с извещением об ошибке следующего содержания:

Runtime Error!

Program:C:\Python25\python.exe

R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.


Подскажите пожалуйста, в какую сторону копать, чтобы подцепить библиотеку успешно?

З.Ы. Предвидя посылы в различные места:
1. Гуглил упорно. Нашёл мало и ничего не помогало.
2. Поиск по форуму делал, тоже не помогло.
3. При сборке DLL, генерируются манифесты, так что проблемм с зависимостями возникать не должно.
4. DLL'ки собраны корректно и работают замечательно. Линковка и работа с ними из
C-шного кода не вызывает проблемм на протяжении нескольких лет.
5. Интереса ради пробовал проделать то же самое питоном версии 2.6. Результат тот же.
6. Вот описание возникающей ошибки в msdn http://msdn.microsoft.com/en-us/library/ms235560%28VS.80%29.aspx, но оно, увы, ответов не даёт.
7. Загонять манифесты внутрь dll'ек тоже пробовал, тоже не помогает.
8. на Windows XP x86_64 + сборка с помощью MS Visual Studio 9.0 работает замечательно, со всем линкуется и даже почти бегает за пивом =)

Инструментальные средства разработки » Eclipse templates key binding » Июнь 16, 2010 12:45:05

1. Можно ли в Эклипсе как нибудь забиндить какой нибудь темплэйт на горячую клавишу??
2. Как мне в темплейтах заменять выделенный текст? К примеру хочу тэмплейт чтобы заменял dfdf на ‘dfdf’ к примеру чтобы я выделил слова dfdf нажал какую нибудь горячую клавишу и выделение “окружилось” кавычками (ну или скобками или чем либо другим)

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

Python для новичков » Аффинное преобразование участка изображения в PIL » Июнь 12, 2010 21:43:41

Расскажите, пожалуйста, как можно преобразовать(растянуть) кусок изображения например с координатами (x1,y1,x2,y2) в (x11,y11,x22,y22).
Вот текст из документации
transform(xs, ys, Image.AFFINE, (a,b,c,d,e,f))
Affine transformation. The values a through f are the first two rows of an affine transform matrix.
Each pixel at (x,y) in the resulting image comes from position (ax+by+c,dx+ey+f) in the input
image, rounded to the nearest pixel.
никак не пойму, что нужно делать >.<

Web » Настройка FastCGI для Python проекта » Июнь 11, 2010 16:09:21

Есть версия скриптов под mod_apache, нужно переделать под FastCGI, но никак не получается сделать “одно окно” для fastcgi, хотя хорошо работает для mod_python.
Код mod_python:
<VirtualHost z.world.com:80>
DocumentRoot "/var/www/z
ServerName z.world.com:80
<Directory "/var/www/z">
AddDefaultCharset utf-8
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from all

SetHandler mod_python
PythonHandler util.publisher
PythonDebug on
PythonPath "sys.path + ['/var/www/z']"
PythonOption basedir "/var/www/z"
PythonOption baseurl "/"
PythonAutoReload on
PythonOption mod_python.session.session_type "FileSession"
PythonOption mod_python.file_session.database_directory "/var/www/z/run/sessions"
</Directory>
</VirtualHost>
Код для fastcgi (правильнее сказать попытка кода):
<VirtualHost z2.world.com:80>
ServerAdmin a@b.c
DocumentRoot /var/www/z2
ServerName z2.world.com:80
ErrorLog /var/www/log/error.log
<Directory />
Options FollowSymLinks +ExecCGI
AllowOverride All
</Directory>
#<Files app.py>
# SetHandler fastcgi-script
#</Files>

<Directory />
Options FollowSymLinks +ExecCGI
AllowOverride All
SetHandler fastcgi-script
PythonHandler util.publisher
DirectoryIndex util/publisher.py
PythonDebug on
PythonPath "sys.path + ['/var/www/z2']"
PythonOption basedir "/var/www/z2"
PythonOption baseurl "/"
PythonAutoReload on
PythonOption fastcgi-script.session.session_type "FileSession"
PythonOption fastcgi-script.file_session.database_directory "/var/www/z2/run/sessions"
</Directory>
</VirtualHost>

Django » Кэширование » Июнь 10, 2010 12:28:12

Настроил автокэширование с REDIS, все замечательно. Но хочется ручками обновлять кэш, точнее удалять старый. Например, когда я изменил данные в базе. А для этого нужно знать ключ. Может кто сталкивался с такой задачей? Подаскажите пожалуйста.