Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3496 posts.

Python для новичков » Как правильно реализовать? » Дек. 15, 2012 10:29:26

Есть класс для работы vk api.
Есть метод для загрузки фото, и тут начинаються проблемы, ВК за раз можно загрузить 5 фото, но описание в таком случае надо указывать каждой отдельно, ну это пол беды, обьеденил аплоад и установку описания в один метод.
Проблема: при установке описаний может вылететь каптча, соответсвенно фото загружены, а описание установлено допустим 2 фото из 5, при появлении каптчи вылетает исключение, оно обрабатываеться человек вводит какптчу, но как программе вернуться потом на тоже место… Насколько оптимально, сохраняться все нужные переменные, в атрибуты класса чтобы потом вернуться в нужное место и закончить нужные действия.
Или лучше разбить аплоад и прикрпление описания на 2 метода?
    def uploads_foto_to_album(self, photos, aid, gid = None, cp_sid = None, cp_key = None):
        """
        VKApi.uploads_foto_to_album(photos, aid, gid = None)
        photos - Список кортежей вида: (Тело фото, расширение фото, описание фото(м.б None)), 
        должен содержать не более 5 кортежей.
        aid - Айди альбома например 126663199.
        gid - Айди группы необходимо указать если грузим в группу.
        cp_sid - Айди каптчи
        cp_key - Текст каптчи
        Грузит все фото в указанный альбом\группу, и прикрепляет описание если указано
        """
        if len(photos) > 5: #ВК разрешено грузить за раз не более 5 фото
            raise vkApiError('Many photo')
        if gid:             #Если грузим в группу необходимо указать ID
            params = {
                'aid': aid,
                'gid': gid
            }
        else:
            params = {
                'aid': aid,
            }
        if cp_sid and cp_key:
            #Получаем сервер куда грузить фото 
            upload_url = str(self.call_api('photos.getUploadServer', params)['upload_url'], cp_sid, cp_key)
        else:
            upload_url = str(self.call_api('photos.getUploadServer', params)['upload_url'])
        #Формируем тело multipart\form-data запроса
        post_data = Multipart()
        photo_num = 1
        for photo, ext, dest in photos:
             field_name = 'file%i' % photo_num
             post_data.addPart(field_name, photo, ''.join([field_name, ext]), 'image/%s' % ext)
             photo_num += 1
        self._httpCl.post(upload_url, post_data) #Грузим фото на сервер ВК
        self.request_result = json.loads(self._httpCl.body)
        if gid:
            params['gid'] = gid
        params['hash'] = self.request_result[u'hash']
        params['photos_list'] = self.request_result[u'photos_list']
        params['server'] = self.request_result[u'server']
        params['aid'] = aid
        #Т.к при загрузке более одного фото прифигачит всем одинаковое описание,
        #далее в цикле ниже проверяються кортежи с фото на наличие описаний, дабы
        #не дергать лишний раз этот цикл написано это условие..
        if len(photos) == 1 and photos[0][2]: 
            params['caption'] = photos[0][2]
        resp_photo = self.call_api('photos.save', params) #Сохраняем в нужном альбоме..
        #Если фоток несколько то каждую в цикле чекаем на наличие описание, 
        #и если оно есть, то через метод photos.edit(ВК API) добавляем им описание..
        if len(photos) > 1: 
            resp_photo.reverse() #Т.к из списка полученых фото все достаеться через pop реверсим список..
            for photo_item in photos:  #Вот тут м.б исключение с каптчей
                pid = resp_photo.pop()[u'pid']
                if photo_item[2]:
                    if gid:
                        params = {
                        'pid': pid,
                        'caption': photo_item[2],
                        'owner_id': ''.join(['-', gid])
                        }
                    self.call_api('photos.edit', params)

Python проекты » вакансия: разработчик Python(Erlang), Data mining » Дек. 15, 2012 02:56:20

Мы НЕ стартап и НЕ социальная сеть
Мы настоящий, работающий(уже десятки тысяч запросов в секунду) проект в области автоматической обработки данных.


Требования:
python, postgesql, rabbitmq, redis
data mining
математика и логика

Как плюс:
erlang, с++, js, haskell, riak
терпение

Задачи:
делать инструменты для сбора данных
- интеграция с различными api
- сбор данных из открытых источников
делать инструменты для обработки и извлечения данных
- группировка, сравнение, создание новых данных
- по точными условиями и на основе нечетких признаков
- с ручным интерфейсом и самообучающиеся
делать интерфейсы для работы аналитиков
- для создания фильтров и правил обработки
делать сервисы для отображения данных
- проектировать удобные интерфейсы
- делать api под десятки тысяч запросов в секунду

Офис на выбор, Москва м.Славянский бульвар или Тайланд о.Самуи
Фуллтайм со свободным графиком
Оплата от 3к$

резюме на hr@py7.ru

Django » Как для ModelChoiceField на страничке не только выбирать, но и записать значение? » Дек. 13, 2012 22:24:42

Здравствуйте.
Вот например модель:
class BookMarkCategory(models.Model):
    categoryname = models.CharField(max_length=50)
class BookMark(models.Model):
    category = models.ForeignKey(BookMarkCategory)
    link = models.CharField(max_length=150)

Форма для этой модели создана через forms.ModelForm.

Когда я захожу на страничку для создания закладки, то в форме для поля BookMark.category используется стандартный виджет widgets.Select. Этот виджет не позволяет записать в поле новое значение, но ТОЛЬКО выбрать.
Помогите сделать, чтобы можно было и выбирать, и записывать новое значение???
Наверняка это распространенная ситуация. Есть ли готовое решение(может сторонние Field/Widget)? Боюсь сам не смогу переопределить работу поля или виджета. В документации по этому поводу ничего соответствующего нету.

Python для новичков » Python + Shared Memory » Дек. 13, 2012 17:56:44

Добрый день, не могли бы посоветовать манулы по работе с shared memory из питона.
Сама задача состоит в том что-бы подключаться к шаред мемори сервера, выкачивать сегмент scoreboard апача и распарсить его в удобочитаемом виде.

И вообще стоит ли игра свеч?
Уже недели 2 гугл читаю, ничего особо подходящего не нашел.

Как вариант только с помощью скрипта на php выкачивать сегмент, и уже отдельно парсить, но это, как сами понимаете, костыль на костыле и костылем погоняет.

Python для новичков » Выбор и составление предложений » Дек. 12, 2012 00:06:13

Друзья, такой вопрос. Есть куча функций
import random


def noun():
nouns = [u'squirrel', u'chipmunk', u'elephant', u'mushroom', u'banana', u'book']
return random.choice(nouns)

def adverb():
nouns = [u'aggressively', u'loudly', u'slowly', u'proudly', u'dangerously']
return random.choice(nouns)

def intensifier(adv):
intensifiers = [u'quite', u'rather', u'very', u'enough']
random_intensifier = random.choice(intensifiers)
if random_intensifier == 'enough':
result = adv + u' ' + random_intensifier
else:
result = random_intensifier + u' ' + adv
return result

def adjective(word):
adjectives = [u'big', u'little', u'brown', u'red', u'yellow', u'nasty', u'wonderful', u'fascinating', u'ordinary']
return random.choice(adjectives) + u' ' + word

def verb_of_thought(subj):
verbs = [u'thinks', u'knows', u'is convinced', u'believes']
return subj + u' ' + random.choice(verbs)

def verb_transitive(subj, obj):
verbs = [u'eat', u'throw', u'frighten', u'drink', u'kill', u'launch']
return subj + u' ' + random.choice(verbs) + u' ' + obj

def random_sentence():
sentence = verb_of_thought(adjective(noun())) +\
u' that ' + verb_transitive(adjective(noun() + u's'), noun() + u's') +\
u' ' + intensifier(adverb()) + u'.'

return sentence


print random_sentence()
они складывают какую-то чепуху, но вот генерируют предложение. Собственно, вопрос. Как написать туда еще одну функцию, чтобы программа умела бы строить разные типы предложений. То есть в самой первой функции, которая определяет структуру предложения, будет задано несколько структур, одна из которых выбирается случайным образом. Это могут быть сложносочинённое, сложноподчинённое и простое предложения, а могут быть просто несколько сложноподчинённых, но разных (скажем, одно из подлежащего с двумя определениями и союзом “что”, а другое – с двумя однородными подлежащими и союзом “потому что”, как-нибудь так).

Флейм » Тест » Дек. 11, 2012 19:20:24

В этом топике Vadimoto и другие новички форума учатся оформлять код.

Центр помощи » Сплайн интерполяция степени 3 дефекта 1, не до конца рабочий код » Дек. 6, 2012 13:42:17

Вот мой рабочий код, но в нём есть где-то ошибка либо моё не понимание. Он должен быть более гладкий как функция, но что-то у меня идёт не так. В методе два графика проходящих через одни и те же точки, это два разных метода прогонки, один для сплайн-интерполяции степени 3 дефекта 1 из литературы Вержбицкий В.М. - Численные методы, другой из википедии, - стандартный метод прогонки
Собственно не знаю в чём проблема, но преподаватель говорит, что ошибка, а где я уже с месяц не могу найти.
from numpy import *
import pylab
from matplotlib import mlab
from scipy.linalg import solve
from scipy import array
import matplotlib.pyplot as plt
from pylab import *

f1=array([
[4.0,102.56],
[4.2,104.18],
[4.5,100.11]])

def sweep(f,d2fa,d2fb):
k=2
A = zeros(len(f))
B = zeros(len(f))
C = zeros(len(f))
F = zeros(len(f))
res = zeros(len(f))
alpha = zeros(len(f))
beta = zeros(len(f))
while (k<len(f)):
A[k]=h(f,k-1)
B[k]=h(f,k)
C[k]=2*(h(f,k-1)+h(f,k))
F[k]=3*(func(f,k)-func(f,k-1))
k+=1
alpha[2]=-B[2]/C[2]
beta[2]=F[2]/C[2]
k=2
while (k<len(f)-1):
alpha[k+1]=-B[k]/(A[k]*alpha[k]+C[k])
beta[k+1]=(F[k]-A[k]*beta[k])/(A[k]*alpha[k]+C[k])
k+=1
k=len(f)-2
res[0]=d2fa
res[len(f)-1]=d2fb
while(k>0):
res[k]=alpha[k+1]*res[k+1]+beta[k+1]
k-=1
return res

def h(f,k):
return f[k,0]-f[k-1,0]

def func(f,k):
return (f[k,1]-f[k-1,1])/h(f, k)

def sweep2(f,d2fa,d2fb):
k=2
sigma = zeros(10)
lamda = zeros(10)
C=zeros(10)
C[0]=d2fa
C[9]=d2fb
sigma[0]=-h(f, 2)/(2*h(f,1)+2*h(f,2))
lamda[0]=3*(func(f,2)-func(f,1))/(2*(h(f,1)+h(f,2)))
while k<len(f):
sigma[k-1]=h(f,k)/(2*h(f,k-1)+2*h(f,k)+h(f,k-1)*sigma[k-2])
lamda[k-1]=(3*(func(f,k)-func(f,k-1))-h(f,k-1)*lamda[k-2])/(2*h(f,k-1)+2*h(f,k)+h(f,k-1)*sigma[k-2])
k+=1
k=9
while k>1:
C[k-1]=sigma[k-1]*C[k]+lamda[k-1]
k-=1
return C


def ispline(f,x,C):
if x<f[0,0]:
print "viberite bol'she x"
elif x>f[len(f)-1,0]:
print "viberite men'she x"
else:
k=0
count=0
A = f[:,1]
B = zeros(len(f))
D = zeros(len(f))
while (k<len(f)):
if (x-f[k,0]<=0):
count=k
k=10
else:
k+=1
k=1
while (k<len(f)):
B[k]= func(f,k)+2/3*h(f,k)*C[k]+1/3*h(f,k)*C[k-1]
D[k]= (C[k]-C[k-1])/(3*h(f,k))
k+=1
g=A[count]+B[count]*(x-f[count,0])+C[count]*(x-f[count,0])**2+D[count]*(x-f[count,0])**3
return g

def graf(f):
xmin = 4.0
xmax = 4.5
dx = 0.01
xlist = mlab.frange (xmin, xmax, dx)
ylist = [ispline(f,x,sweep2(f,0,0)) for x in xlist]
pylab.plot (xlist, ylist)
y2list = [ispline(f,x,sweep(f,0,0)) for x in xlist]
pylab.plot (xlist, y2list)
x = f[:,0]
y = f[:,1]
area = 100
scatter(x,y,s=area, marker='^', c='r')
pylab.show()

graf(f1)

Python для новичков » Пакет SimPy  » Дек. 5, 2012 20:25:17

У нас есть поток заявок, обслуживаемых 1 устройтвом. Ниже приведено программа для реализации данной системмы с помошью пакета SimPy.
1 
2 """A counter with a random service time""" 
3 from SimPy.Simulation import * 
4 from random import expovariate, seed 
5 
6 class Source(Process): 
7     """ Source generates customers randomly""" 
8 
9     def generate(self,number,interval): 
10         for i in range(number): 
11             c = Customer(name = "Customer%02d"%(i,)) 
12             activate(c,c.visit(timeInBank=12.0)) 
13             t = expovariate(1.0/interval) 
14             yield hold,self,t 
15 
16 class Customer(Process): 
17     """ Customer arrives, is served and leaves """ 
18 
19     def visit(self,timeInBank=0): 
20         arrive=now() 
21         print "%7.4f %s: Here I am     "%(now(),self.name) 
22         yield request,self,counter 
23         wait=now()-arrive 
24         print "%7.4f %s: Waited %6.3f"%(now(),self.name,wait) 
25         tib = expovariate(1.0/timeInBank) 
26         yield hold,self,tib 
27         yield release,self,counter 
28         print "%7.4f %s: Finished      "%(now(),self.name) 
29 
30 def model(theseed): 
31     global counter 
32     seed(theseed) 
33     counter = Resource(name="Karen") 
34 
35     initialize() 
36     source = Source(Source) 
37     activate(source,source.generate(5,interval=10.0),0.0) 
38     simulate(until=400.0) 
39 
40 model(theseed=12345)

Подскажите как правильно подсчитать среднюю длинну очереди заявок и время простоя устройства обслуживания. В пакете вроде есть необходимые средства, но вот как правильно их использовать я понять не могу. Заранее благодарю за любую помошь.

Центр помощи » Пакет SimPY » Дек. 4, 2012 04:29:25

Есть задача на реализацию СМО с 1 устройством обслуживания и потоком клиентов.
1 
2 """A counter with a random service time""" 
3 from SimPy.Simulation import * 
4 from random import expovariate, seed 
5 
6 class Source(Process): 
7     """ Source generates customers randomly""" 
8 
9     def generate(self,number,interval): 
10         for i in range(number): 
11             c = Customer(name = "Customer%02d"%(i,)) 
12             activate(c,c.visit(timeInBank=12.0)) 
13             t = expovariate(1.0/interval) 
14             yield hold,self,t 
15 
16 class Customer(Process): 
17     """ Customer arrives, is served and leaves """ 
18 
19     def visit(self,timeInBank=0): 
20         arrive=now() 
21         print "%7.4f %s: Here I am     "%(now(),self.name) 
22         yield request,self,counter 
23         wait=now()-arrive 
24         print "%7.4f %s: Waited %6.3f"%(now(),self.name,wait) 
25         tib = expovariate(1.0/timeInBank) 
26         yield hold,self,tib 
27         yield release,self,counter 
28         print "%7.4f %s: Finished      "%(now(),self.name) 
29 
30 def model(theseed): 
31     global counter 
32     seed(theseed) 
33     counter = Resource(name="Karen") 
34 
35     initialize() 
36     source = Source(Source) 
37     activate(source,source.generate(5,interval=10.0),0.0) 
38     simulate(until=400.0) 
39 
40 model(theseed=12345)

Подскажите как правильно подсчитать длинну очереди и время простоя устройства обслуживания.
Код можно менять как угодно. Мне важно понять принцип, поэтому очень прошу хотябы краткие пояснения что и зачем. Заранее благодарен.

Python для новичков » Matplotlib PIL проблема загрузки изображения » Ноя. 30, 2012 16:10:57

Доброе время суток!
Я хочу загрузить картинку, но постоянно вылетает ошибка. Я так понимаю, что я неправильно пишу путь. Кто нибудь может мне подсказать, что мне исправить? Сам файл на рабоче столе. Но я не могу нормально написать путь( Данный пример код из туториала по matplotlib
#!/usr/bin/env python
from pylab import *
try:
    from PIL import Image
except ImportError:
    raise SystemExit("PIL must be installed to run this example")
import matplotlib.cbook as cbook
datafile = cbook.get_sample_data('lol.jpg')
lol = Image.open(datafile)
dpi = rcParams['figure.dpi']
figsize = lol.size[0]/dpi, lol.size[1]/dpi
figure(figsize=figsize)
ax = axes([0,0,1,1], frameon=False)
ax.set_axis_off()
im = imshow(lol)
show()
А ошибка такая:
KeyError: ‘file image_gallery not in cache; received HTTP Error 404: Not Found when trying to retrieve’

Python для экспертов » generateDS -- Generate Data Structures from XML Schema » Ноя. 30, 2012 09:47:30

Попробовал поискать по форуму и ничего не нашел. Есть ли у кого опыт использования этого ПО.

Вот кратенькое описание.
generateDS.py, производит структуры данных Питона например, определения класса из документа Схемы XML. Эти структуры данных представляют элементы в документе XML, описанном Схемой XML. Это также производит анализаторы, которые загружают документ XML в те структуры данных. Кроме того, отдельный файл, содержащий окурки подклассов, произвольно произведен. Пользователь может добавить методы к подклассам, чтобы обработать содержание документа XML. Произведенный кодекс contains:РСР Питона определение класса для каждого элемента определен в документе Схемы XML. РСР главная функция и функция водителя, которая может использоваться, чтобы проверить произведенный кодекс. РСР Анализатор, который прочитает документ XML, который удовлетворяет Схему XML, от которой был произведен анализатор. Анализатор создает и населяет структуру дерева случаев произведенных классов Питона. Методы РСР в каждом классе, чтобы экспортировать случай отступают к экспорту метода XML и экспортировать случай в буквальное представление метода структуры данных Питона exportLiteral. Произведенные классы содержат following:РСР метод конструктора __ init __, с переменной участника initializers. Методы РСР с названиями getX и setX для каждой переменной участника X или, если переменная участника определена с maxOccurs=unbounded, методами с названиями getX, setX, addX, и insertX.РСР A, строят метод, который может использоваться, чтобы населить случай класса от узла в minidom дереве. РСР экспортный метод, который напишет случай и любые вложенные подслучаи к объекту файла как текст XML. РСР exportLiteral метод, который напишет случай и любые вложенные подслучаи к объекту файла как текст опечаток Питона. Произведенный файл подкласса содержит одно определение подкласса для каждого класса представления данных. Если файл подкласса используется, то анализатор создает случаи подклассов вместо того, чтобы создать случаи суперклассов.

GUI » win32api.GetAsyncKeyState(ord(unichr(65))) » Ноя. 29, 2012 19:30:19

Всем Привет!!!
Помогите пожалуйста!!!

У меня проблема с win32api.GetAsyncKeyState(ord(unichr(65)))
в моем случае 65 это буква “А”
этот код работает
import win32api
import win32con
check = True
while check:
    print "Hello!"
    if win32api.GetAsyncKeyState(ord(unichr(65))):
        check = False
        print "GoodBye"
Но…
если я там напишу 97 (97 это буква “а”)
то тогда этот код не работает
Как можно сделать чтобы lower “а” is pressed????
Заранее Спасибо!!!!



Web » googl app engine: Как создать фреймы? » Ноя. 29, 2012 11:21:16

У меня есть два класса, каждый из которых возвращает штмл-ку
И третья, которой я пытаюсь создать страницу с фреймами.

[code python]class add_nakl2(webapp2.RequestHandler):
def post(self):
self.response.out.write('<html><body>')
st = '<br>'+'<form action="/add_strokuP" enctype="multipart/form-data" method="post"> <input type="submit", value = "Add"></form>'
self.response.out.write('<tr><th>Tovar<th><th>Count</th>Edin. izm.</th><th>Cena</th><th>Summa</th></tr>')
if self.session['parent_nakl']:
prnt = self.session['parent_nakl']
stroki = db.GqlQuery('SELECT * '
'FROM Pnakl_stroki ',
'WHERE prnt='+prnt+','
'ORDER BY tovar ')
for st in stroki:
self.response.out.write('<tr><th>Tovar<th><th>Count</th>Edin. izm.</th><th>Cena</th><th>Summa</th></tr>')

self.response.out.write('</table>')
self.response.out.write('</body></html>')

class add_nakl1(webapp2.RequestHandler):
def post(self):
self.response.out.write('<html><body><table>')

self.response.out.write('N <input type="text" name="nomer"> date <input type="date" name="date"><br>')
self.response.out.write('Kontragent <select>')
l = []
kontragenty = db.GqlQuery('SELECT * '
'FROM Kontragent '
'ORDER BY name ')

for kont in kontragenty:
self.response.out.write('<option value="'+kont.name+'">'+kont.name+'</option>')
st = '<br>'+'<form action="/save_pnakl" enctype="multipart/form-data" method="post"> <input type="submit", value = "Save"></form>'
self.response.out.write(st)
self.response.out.write('</body></html>')

class add_nakl(webapp2.RequestHandler):
def post(self):
st = '<html><body><frameset rows="260px,*"><frame name="nakladnye" src="/add_nakl">'
st = st +'<frame name="main" src="/add_nakl2">'
st = st +'</frameset></body></html>'
self.response.out.write(st)[/code]

В результате возвращается такая штмл
<html><body><frameset rows="260px,*"><frame name="nakladnye" src="/add_nakl"><frame name="main" src="/add_nakl2"></frameset></body></html>

Центр помощи » Помогите пожалуйста разобраться с ошибкой » Ноя. 28, 2012 22:41:44

http://pastebin.com/Y8LhGj0a
ValueError: substring not found на 31 строке. Скрипт для декодирования текста зашифрованного Виженером. И если как-то можно упростить код, то я с удовольствием выслушаю Ваши замечания.

GUI » PyQt, вызов окна из окна » Ноя. 28, 2012 19:24:23

Доброго времени суток. Игрался и разбирался с PyQt. Сделал некоторую форму.

import sys
from PyQt4 import QtCore, QtGui
import datetime
try:
	_fromUtf8 = QtCore.QString.fromUtf8
except:
	_fromUtf8 = lambda s: s
class Ui_MainWindow(QtGui.QWidget):
	def __init__(self):
		super(Ui_MainWindow, self).__init__()
		self.nameWindowTitle = "MainWindowRequest"
	def setupUi(self, MainWindow):
		MainWindow.setObjectName(_fromUtf8("MainWindow"))
		MainWindow.resize(500, 440)
		self.centralwidget = QtGui.QWidget(MainWindow)
		self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
		self.datePlanned = QtGui.QDateEdit(self.centralwidget)
		self.datePlanned.setGeometry(QtCore.QRect(40, 80, 201, 22))
		self.datePlanned.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
		self.datePlanned.setCorrectionMode(QtGui.QAbstractSpinBox.CorrectToPreviousValue)
		self.datePlanned.setDate(datetime.date.today())
		self.datePlanned.setCalendarPopup(True)
		self.datePlanned.setObjectName(_fromUtf8("datePlanned"))
		self.dateCreation = QtGui.QDateEdit(self.centralwidget)
		self.dateCreation.setGeometry(QtCore.QRect(40, 40, 201, 22))
		self.dateCreation.setReadOnly(True)
		self.dateCreation.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons)
		self.dateCreation.setObjectName(_fromUtf8("dateCreation"))
		self.dateCreation.setDate(datetime.date.today())
		self.radioButtonPaper = QtGui.QRadioButton(self.centralwidget)
		self.radioButtonPaper.setGeometry(QtCore.QRect(150, 130, 82, 17))
		self.radioButtonPaper.setChecked(True)
		self.radioButtonPaper.setObjectName(_fromUtf8("radioButtonPaper"))
		self.radioButtonWeb = QtGui.QRadioButton(self.centralwidget)
		self.radioButtonWeb.setGeometry(QtCore.QRect(150, 150, 82, 17))
		self.radioButtonWeb.setObjectName(_fromUtf8("radioButtonWeb"))
		
		self.label = QtGui.QLabel(self.centralwidget)
		self.label.setGeometry(QtCore.QRect(40, 130, 81, 20))
		self.label.setObjectName(_fromUtf8("label"))
		
		self.labelCreation = QtGui.QLabel(self.centralwidget)
		self.labelCreation.setGeometry(QtCore.QRect(40, 23, 160, 20))
		self.labelCreation.setObjectName(_fromUtf8("labelCreation"))
		self.labelPlanned = QtGui.QLabel(self.centralwidget)
		self.labelPlanned.setGeometry(QtCore.QRect(40, 63, 160, 20))
		self.labelPlanned.setObjectName(_fromUtf8("labelPlanned"))
		self.labelUserName = QtGui.QLabel(self.centralwidget)
		self.labelUserName.setGeometry(QtCore.QRect(300, 23, 161, 20))
		self.labelUserName.setObjectName(_fromUtf8("labelUserName"))
		self.labelTextEdit = QtGui.QLabel(self.centralwidget)
		self.labelTextEdit.setGeometry(QtCore.QRect(40, 173, 160, 20))
		self.labelTextEdit.setObjectName(_fromUtf8("labelTextEdit"))
		self.lineEdit = QtGui.QLineEdit(self.centralwidget)
		self.lineEdit.setGeometry(QtCore.QRect(300, 40, 161, 20))
		self.lineEdit.setReadOnly(True)
		self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
		self.pushButton = QtGui.QPushButton(self.centralwidget)
		self.pushButton.setGeometry(QtCore.QRect(70, 360, 131, 23))
		self.pushButton.setObjectName(_fromUtf8("pushButton"))
		self.pushButton_2 = QtGui.QPushButton(self.centralwidget)
		self.pushButton_2.setGeometry(QtCore.QRect(300, 360, 131, 23))
		self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
		self.plainTextEdit = QtGui.QPlainTextEdit(self.centralwidget)
		self.plainTextEdit.setGeometry(QtCore.QRect(40, 190, 421, 151))
		self.plainTextEdit.setPlainText(_fromUtf8(""))
		self.plainTextEdit.setObjectName(_fromUtf8("plainTextEdit"))
		MainWindow.setCentralWidget(self.centralwidget)
		self.menubar = QtGui.QMenuBar(MainWindow)
		self.menubar.setGeometry(QtCore.QRect(0, 0, 500, 20))
		self.menubar.setObjectName(_fromUtf8("menubar"))
		self.menu = QtGui.QMenu(self.menubar)
		self.menu.setObjectName(_fromUtf8("menu"))
		MainWindow.setMenuBar(self.menubar)
		self.statusbar = QtGui.QStatusBar(MainWindow)
		self.statusbar.setObjectName(_fromUtf8("statusbar"))
		MainWindow.setStatusBar(self.statusbar)
		self.actionExit = QtGui.QAction(MainWindow)
		self.actionExit.setCheckable(True)
		self.actionExit.setObjectName(_fromUtf8("actionExit"))
		self.menu.addAction(self.actionExit)
		self.menubar.addAction(self.menu.menuAction())
		self.retranslateUi(MainWindow)
		QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), lambda :self.onPushButtonClickSendRequest(MainWindow))
		#QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), self.showTable)
		QtCore.QObject.connect(self.actionExit, QtCore.SIGNAL(_fromUtf8("triggered()")), MainWindow.close)
		QtCore.QMetaObject.connectSlotsByName(MainWindow)
	def showTable(self):
		pass
	def showDialogError(self, text):
		QtGui.QMessageBox.critical(self, self.toUtf("Ошибка"), self.toUtf(text), QtGui.QMessageBox.Ok)
	def showDialogSuccess(self, text):
		QtGui.QMessageBox.information(self, self.toUtf("Отлично"), self.toUtf(text), QtGui.QMessageBox.Ok)
	def onPushButtonClickSendRequest(self, MWnd):
		#нечто сотворяется 
		MWnd.close()
	def toUtf(self, text):
		return QtGui.QApplication.translate("MainWindow", text, None, QtGui.QApplication.UnicodeUTF8)
	def retranslateUi(self, MainWindow):
		MainWindow.setWindowTitle(self.toUtf(self.nameWindowTitle))
		self.lineEdit.setText(self.toUtf("Noname"))
		self.labelUserName.setText(self.toUtf("Ваше имя в системе"))
		self.labelTextEdit.setText(self.toUtf("Описание"))
		self.labelCreation.setText(self.toUtf("Дата сегодня"))
		self.labelPlanned.setText(self.toUtf("Запланированая дата"))
		self.radioButtonPaper.setText(self.toUtf("abc"))
		self.radioButtonWeb.setText(self.toUtf("def"))
		self.label.setText(self.toUtf("Тип"))
		self.pushButton.setText(self.toUtf("Сформировать запрос"))
		self.pushButton_2.setText(self.toUtf("Просмотр запросов"))
		self.menu.setTitle(self.toUtf("Меню"))
		self.actionExit.setText(self.toUtf("Выход"))
def main():
	app = QtGui.QApplication(sys.argv)
	MainWind = QtGui.QMainWindow()
	form = Ui_MainWindow()
	form.setupUi(MainWind)
	desktop = QtGui.QApplication.desktop().availableGeometry()
	x, y = (desktop.width() - MainWind.width())//2, (desktop.height() - MainWind.height())//2	
	MainWind.move(x, y)
	MainWind.show()
	sys.exit(app.exec_())
if __name__=="__main__":
	main()

и решил сделать таблицу, в новом окне. Таблицу я реализовал в отдельном файле.

import sys
from PyQt4 import QtCore, QtGui
try:
	_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
	_fromUtf8 = lambda s: s
class TableLedData(QtGui.QTableWidget):
	def __init__(self, structdata, *args):
		QtGui.QTableWidget.__init__(self, *args)
		self.data = structdata
		self.col, self.row = args
		self.setTable()
		self.setData()
		self.current = 0, 0
	def setData(self):
		for n in range(self.col):
			color=self.setComboBoxTable(n, int(self.data[n][0]))
			for m in range(1, self.row):
				newitem = QtGui.QTableWidgetItem(self.data[n][m])
				self.setItem(n, m, newitem)
				self.item(n, m).setBackgroundColor(color)
	def getColor(self, comboBoxTable):
		iCur = comboBoxTable.currentIndex()
		if	iCur==0:	return(QtGui.QColor(255, 0, 150))
		elif iCur==1:	return(QtGui.QColor(0, 255, 0))
		elif iCur==2:	return(QtGui.QColor(0, 0, 255))
	def setPalette_ComboBox(self, comboBoxTable):
		color = self.getColor(comboBoxTable)
		palette = QtGui.QPalette()
		brush = QtGui.QBrush(color)
		brush.setStyle(QtCore.Qt.SolidPattern)
		palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
		brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
		brush.setStyle(QtCore.Qt.SolidPattern)
		palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
		comboBoxTable.setPalette(palette)
		return(color)
	def setComboBoxTable(self, col, iCur):
		comboBoxTable=QtGui.QComboBox()
		comboBoxTable.setObjectName("comboBoxTable_"+str(col))
		QtCore.QObject.connect(comboBoxTable, QtCore.SIGNAL(_fromUtf8("currentIndexChanged(int)")), lambda :self.setColorCol(comboBoxTable))
		self.setCellWidget(col, 0, comboBoxTable)
		comboBoxTable.addItem(_fromUtf8("One"))
		comboBoxTable.addItem(_fromUtf8("Two"))
		comboBoxTable.addItem(_fromUtf8("Tree"))
		comboBoxTable.setCurrentIndex(iCur)
		color=self.setPalette_ComboBox(comboBoxTable)
		return(color)
	def setColorCol(self, comboBoxTable):
		n = int(comboBoxTable.objectName()[14:])
		color = self.setPalette_ComboBox(comboBoxTable)
		for m in range(1, self.row):
			newitem = QtGui.QTableWidgetItem(self.data[n][m])
			self.setItem(n, m, newitem)
			self.item(n, m).setBackgroundColor(color)
	def setTable(self):
		self.verticalHeader().setDefaultSectionSize(20)
		#self.setSortingEnabled(True)
		self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
		self.setAlternatingRowColors(True)
		self.setObjectName(_fromUtf8("tableWidget"))
		self.setWordWrap(False)
		self.setGridStyle(QtCore.Qt.SolidLine)
		self.setShowGrid(True)
		self.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
		QtCore.QObject.connect(self, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.current)
	def current(self):
		cur_col = self.currentColumn()
		cur_row = self.currentRow()
		self.current = cur_col, cur_row
		print(cur_col, cur_row)
class Ui_Form(QtGui.QWidget):
	def __init__(self, dataForTable, col, row):
		super(Ui_Form, self).__init__()
		self.data, self.col, self.row = dataForTable, col, row
	def setupUi(self, Form):
		Form.setObjectName(_fromUtf8("Form"))
		Form.resize(550, 350)
		Form.setWindowModality(QtCore.Qt.WindowModal)
		self.gridLayoutWidget = QtGui.QWidget(Form)
		self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, Form.width(), Form.height()))
		self.gridLayoutWidget.setObjectName(_fromUtf8("gridLayoutWidget"))
		self.gridLayout = QtGui.QGridLayout(self.gridLayoutWidget)
		self.gridLayout.setContentsMargins(10, 15, 10, 15)
		self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
		self.horizontalLayout = QtGui.QHBoxLayout()
		self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
		self.pushButton_del = QtGui.QPushButton(self.gridLayoutWidget)
		self.pushButton_del.setObjectName(_fromUtf8("pushButton_del"))
		self.horizontalLayout.addWidget(self.pushButton_del)
		self.pushButton_block = QtGui.QPushButton(self.gridLayoutWidget)
		self.pushButton_block.setObjectName(_fromUtf8("pushButton_block"))
		self.horizontalLayout.addWidget(self.pushButton_block)
		self.pushButton_cansel = QtGui.QPushButton(self.gridLayoutWidget)
		self.pushButton_cansel.setObjectName(_fromUtf8("pushButton_cansel"))
		self.horizontalLayout.addWidget(self.pushButton_cansel)
		self.gridLayout.addLayout(self.horizontalLayout, 2, 1, 1, 1)
		self.tableWidget = TableLedData(self.data, self.col, self.row)
		self.gridLayout.addWidget(self.tableWidget, 1, 1, 1, 1)
		self.retranslateUi(Form)
		QtCore.QObject.connect(self.pushButton_cansel, QtCore.SIGNAL(_fromUtf8("clicked()")), Form.close)
		QtCore.QMetaObject.connectSlotsByName(Form)
	def toUtf(self, text):
		return QtGui.QApplication.translate("Form", text, None, QtGui.QApplication.UnicodeUTF8)
	def retranslateUi(self, Form):
		Form.setWindowTitle(self.toUtf("123S"))
		self.pushButton_del.setText(self.toUtf("Удалить"))
		self.pushButton_block.setText(self.toUtf("Блокировать"))
		self.pushButton_cansel.setText(self.toUtf("Закрыть"))
def main():
	lista = ['0', 'aa', 'ab', 'ac', 'ad']
	listb = ['1', 'ba', 'bb', 'bc', 'bd']
	listc = ['2', 'ca', 'cb', 'cc', 'cd']
	listd = ['0', 'da', 'db', 'dc', 'dd']
	liste = ['1', 'ea', 'eb', 'ec', 'ed']
	listf = ['1', 'fa', 'fb', 'fc', 'fd']
	dataFromDB = lista, listb, listc, listd, liste, listf
	col, row = len(dataFromDB), len(dataFromDB[0])
	app = QtGui.QApplication(sys.argv)
	MainWind = QtGui.QMainWindow()
	form = Ui_Form(dataFromDB, col, row)
	form.setupUi(MainWind)
	MainWind.show()
	sys.exit(app.exec_())
if __name__=="__main__":
	main()

Помогите, а то застопорился. Я конвертирую с ui в py, потом сижу, разбираю, смотрю что и как можно сделать… Несколько вопросов
1) как подключить файл с таблицей, что бы вызвать таблицу в модальном окне.
2) Если для таблицы установить setSortingEnabled(True), укажите, как и что исправить, ибо после сортировки не идет соответствие ComboBox - строка.

Google App Engine » googl app engine и картинка » Ноя. 27, 2012 15:24:54

Взял пример для работы со статическими файлами https://developers.google.com/appengine/docs/python/gettingstarted/staticfiles?hl=ru
Всё работает. Решил вывести картину, поместил в папку stylesheets файл error.jpg

cделал такой шаблон
<html>
<head>
    <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
  </head>
  <body>
    {% for greeting in greetings %}
      {% if greeting.author %}
        <b>{{ greeting.author.nickname }}</b> wrote:
      {% else %}
       An anonymous person wrote:
      {% endif %}
      <blockquote>{{ greeting.content|escape }}</blockquote>
    {% endfor %}
    <form action="/sign" method="post">
      <div><textarea name="content" rows="3" cols="60"></textarea></div>
      <div><input type="submit" value="Sign Guestbook"></div>
    </form>
    <a href="{{ url }}">{{ url_linktext }}</a>
<br>
<img src="/stylesheets/error.jpg">
  </body>
</html>

app.yaml
application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /stylesheets
static_dir: stylesheets

- url: /.*
script: main.py
Картинка не отображается, значек картинки, словно не найден источник. Как вывести в гугл апп картинку?

GUI » Qt рисунок из иконки папки » Ноя. 26, 2012 13:19:33

Добрый день, подскажите, пожалуйста:
Есть папка с назначенной на нее дефолтной иконкой
Как указать Qt виджету (кнопке), что бы на нем была картинка как иконка на этой папке? Не преобразовывая иконку с этой папки вручную в jpeg

Python для новичков » Не срабатывет InputDevice Skype4Py » Ноя. 26, 2012 10:59:19

Решил написать простую программу: набирается тектс, с помощь гугл-переводчика сохраняется в мп-3, далее конвертируется в вав и скармливается скайпу. Примеры каждого по-отдельности накопал в Сети.
Программа звонит, возвращает мп3, конвертирует в вав, но InputDevice не срабатывает

import urllib
import grab
from grab import *
import time
from Tkinter import *
import Skype4Py
from Skype4Py import *
def callback():
	global cl
	cl=skype.PlaceCall(ent.get())
	
def send():
	global l2, c1
	sintez_word = urllib.quote(ent1.get())
	g = Grab()
	g.setup(user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19")
	g.go('http://translate.google.com/translate_tts?tl=en&q='+sintez_word)
	f = open('c:/python_internet/1.mp3','wb')
	f.write(g.response.body)
	f.close()
	time.sleep(1)
	dumpWAV() 
	time.sleep(1)
	cl.InputDevice(Skype4Py.callIoDeviceTypeFile,'c:/python_internet/1.wav')
	l2.configure(text = ent1.get())
def dumpWAV(  ):
	import pymedia.audio.acodec as acodec
	import pymedia.muxer as muxer
	import time, wave, string, os
	name1= 'c:/python_internet/1.mp3'
	name2= 'c:/python_internet/1.wav'
	# Open demuxer first
	dm= muxer.Demuxer( name1[ -1 ].lower() )
	dec= None
	f= open( 'c:/python_internet/1.mp3', 'rb' )
	snd= None
	s= " "
	while len( s ):
		s= f.read( 20000 )
		if len( s ):
			frames= dm.parse( s )
			for fr in frames:
				if dec== None:
					# Open decoder
					dec= acodec.Decoder( dm.streams[ 0 ] )
				r= dec.decode( fr[ 1 ] )
				if r and r.data:
					if snd== None:
						snd= wave.open( name2+ '.wav', 'wb' )
						snd.setparams( (r.channels, 2, r.sample_rate, 0, 'NONE','') )
					
					snd.writeframes( r.data )
root = Tk()
text =''
skype = Skype4Py.Skype()
skype.Attach()
cl=''
l = Label(root, width = 80)
l.grid(row =0, column = 0)
l.configure(text = 'user')
ent = Entry(root, width = 40)
ent.grid(row =0, column = 1)
b = Button(root, text="Call", command=callback)
b.grid(row =0, column = 2)
l1 = Label(root, width = 80)
l1.grid(row =3, column = 0)
ent1 = Entry(root, width = 40)
ent1.grid(row =3, column = 0)
b1 = Button(root, text="Send", command=send)
b1.grid(row =3, column = 3)
l2 = Label(root, width = 80)
l2.grid(row =4, column = 0)
l2.configure(text = text)
m = Menu(root)
root.config(menu=m)
fm = Menu(m)
m.add_cascade(label="File",menu=fm)
fm.add_command(label="Exit", command = lambda: root.destroy())
root.mainloop()

GUI » Ошибка конвертации ui файла в py  » Ноя. 25, 2012 15:36:07

Создал notepad.ui файл в Qt4 Designer и попытался создать файл notepadwindow.py c помощью команды

pyuic4.bat notepad.ui -o notepadwindow.py

В результате получил следующую ошибку

Traceback (most recent call):
  File "C:\Python27\Lib\site-packages\PyQt4\uic\pyuic.py" line 31, in <module>
    from PyQt4 import QtCore
Import Error: DLL load failed: %1 далее что-то непонятное на другой кодировке Win32.

Django » Подскажите примеры работы с django.core.files. » Ноя. 25, 2012 12:20:47

Здравствуйте. Есть такая задачка: в профиле пользователя менять данные через форму. В этой форме есть поле с загрузкой изображения(для аватарки). Если это поле оставлять пустым, то при сохранении данных формы вместо старой аватарки сохраняется пустое значение. Я делал проверку на поступившие данные и пробовал полю модели(для аватарки) присваивать старое значение:
if request.method == 'POST':
        form = ManualUserProfileForm(request.POST, request.FILES)
        if form.is_valid():
            data = form.cleaned_data
            print data
            user_ins = User.objects.get(username=request.user.username)
            profile_ins = User.get_profile(request.user)
            for key, val in data.items():
                print key, type(key)
                if hasattr(profile_ins, key) and val!='':
                    profile_ins.__dict__[key] = val
                elif hasattr(profile_ins, key) and (val=='' or val is None): #для поля аватарки тут не проходит
                    print 'step', key, '___'+str(val)
                    profile_ins.__dict__[key] = profile_ins.__dict__[key]
                elif key=='avatar': print '_____'+str(val)  #и тут почему то тоже
            profile_ins.save()
Но такой способ не проходит. Для остальных полей вс работет корректно, для поля изображения - нет…

Прочитал https://docs.djangoproject.com/en/1.4/ref/files/
Вроде бы понятно. Но хотелось бы увидеть примеры(да и проблему решить не смог пока).