Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> установка рисунка из объекта (PIL) в виджет GtkIm, GtkImage (pyGTK) 
:(
    Опции темы
pythonwin
Дата 13.2.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Всем привет!

пожалуйста, подскажите как объект созданный в PIL отобразить через pyGTK (виджет == GtkImage) ?

и какую библиотеку создания/прорисовки/хранения рекомендуется использовать с pyGTK
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 13.2.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



подшаманил пример из
http://www.async.com.br/faq/pygtk/index.py...e=faq08.007.htp
размер нужный, только сам рисунок не отображается smile

формируется рисунок:
Код

import Image
##import Image._imageing
from random import random
from random import randint
from math   import ceil
maxit    = 70
max_rand = 10
magnify  = 65
x_shift  = 170
y_shift  = 10
img = Image.new('RGB', (400, 680), (0, 0, 0))
for iterat in xrange(30000):
    x = (random() * max_rand) / 50000.0
    y = (random() * max_rand) / 50000.0
    for i in xrange(maxit):
        rand_num = ceil(random() * max_rand * 100) / 100
        if rand_num < 0.01 * max_rand:
            x = 0
            y = 0.16 * y
        elif rand_num < 0.86 * max_rand:
            x = (0.85 * x) + (0.04 * y)
            y = (-0.04 * x) + (0.85 * y) + 1.6
        elif rand_num < 0.93 * max_rand:
            x = (0.2 * x) - (0.26 * y)
            y = (0.23 * x) + (0.22 * y) + 1.6
        else:
            x = (-0.15 * x) + (0.28 * y)
            y = (0.26 * x) + (0.24 * y) + 0.44
    if (x >= -5.0) and (x <= 5.0) and (y >= 0.0) and (y <= 10.0):
        x = int(x * magnify) + x_shift
        y = int(y * magnify) + y_shift
        r = randint(0, 128)
        g = randint(128, 255)
        b = randint(0, 128)
        try:
            img.putpixel((x, y), (r, g, b))
        except IndexError:
            passimg.save('fern.jpg')


заполняем виджет-рисунок из рисунка-объекта

Код

        self.imageFoto = self.wTree.get_widget('imageFoto')
        i = img
        w, h = i.size
        imagestr = i.tostring()
        pixmap = gtk.gdk.Pixmap(self.imageFoto.window, w, h, 0)
        gc = self.imageFoto.style.fg_gc[gtk.STATE_NORMAL]
        x=y=0
        help(pixmap.draw_rgb_image)
        self.imageFoto.set_from_pixmap(pixmap, None)



Это сообщение отредактировал(а) pythonwin - 13.2.2007, 15:48
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 14.2.2007, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



в чём дело? код просто питон выключает smile
пожалуйста, подскажите smile
Код

>>> from datetime import datetime
>>> import PIL.Image, model, Numeric
>>> try:
...     import pygtk
...     pygtk.require("2.0")
... except:
...     pass
...
>>> try:
...     import gtk
...     import gtk.glade
... except:
...     sys.exit(1)
...
>>> class VisitWidget(object):
...     gladefile = '/home/pythonwin/Desktop/GTK//template/project1.glade'
...     window_name = 'window1'
...     def __init__(self, **kw):
...         self.wTree = gtk.glade.XML(self.gladefile, self.window_name)
...         dic = {'on_window1_delete_event':self.close_application}
...         self.set_date()
...         self.wTree.signal_autoconnect(dic)
...     def close_application(self, widget, event, data=None):
...         gtk.main_quit()
...         return False
...     def set_date(self):
...         self.imageFoto = self.wTree.get_widget('imageFoto')
...         i = PIL.Image.open('/home/pythonwin/Desktop/GTK/fern.jpg')
...         w, h = i.size
...         imagestr = i.tostring()
...         pixmap = gtk.gdk.Pixmap(self.imageFoto.window, w, w, 1)
...         gc = self.imageFoto.style.fg_gc[gtk.STATE_NORMAL]
...         x=y=0
...         buff=imagestr
...         pixmap.draw_rgb_image(gc, x, y, w, h, gtk.gdk.RGB_DITHER_NONE, buff)
...         self.imageFoto.set_from_pixmap(pixmap, None)
...
>>> someclass = VisitWidget()
__main__:21: GtkWarning: The gdk_draw_*_image require the drawable argument to
have a specified colormap. All windows have a colormap,
however, pixmaps only have colormap by default if they
were created with a non-NULL window argument. Otherwise
a colormap must be set on them with gdk_drawable_set_colormap
>>> gtk.main()
The program '.' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
  (Details: serial 226 error_code 8 request_code 62 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)


PM WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0802 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.