[PyQt] Custom Timeline widget with (Py)Qt

Jorge Araya Navarro jorgean at lavabit.com
Mon Jul 2 20:03:39 BST 2012


El dom, 01-07-2012 a las 14:08 +0200, David Boddie escribió:

> On Sat, 30 Jun 2012 19:14:04 -0600, Jorge Araya Navarro wrote:
> 
> > Some people got answers like "you should choose between QML, QGraphic
> > framework(?) or flat widgets" from questions like this one. So, instead
> > of writing what I need for my custom Timeline widget, I did a very
> > explicit "mock up" with Inkscape, please see it here[3], is a very
> > important part of my question...
> 
> Just a quick note: you might want to see if there's anything you can
> reuse from Auteur, since that's written in Python.
> 
>   http://auteur-editor.info
>   http://gitorious.org/auteur
> 
> David
> 


Wow, looks cool!
A friend of mine gave me some advice about this issue too, Just for the
record, I'll attach it to this email :)
Oh, some parts of it are in Spanish, Japanese and Esperanto, the more
important ones are of course, in Spanish ;)
-- 

Jorge Araya Navarro
Universitario, idealista y pseudo-activista del Software Libre.
Siquirres, Limón, Costa Rica.
http://swt.encyclomundi.net
Diaspora*: http://diasp.org/u/shackra
identi.ca: http://parlementum.net/sweet
Jabber: shackra at jabberes.org
Skype: ¡De ninguna manera, tras de privativo, te espían!.
el software privativo en GNU/Linux, al igual que en Windows o en MacOs,
te hace un ser no-libre. Deja de engañarte, 
¡¡despierta ahora!!:
http://www.gnu.org/distros/free-distros.html
http://replicant.us/about/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20120702/d7671324/attachment.html>
-------------- next part --------------
- domingo 01 julio 2012, 20:44:11 -
- Hipersayan.x, 20:44:11 -
こんばんは:-D

- Shackra, 20:45:03 -
Via Fratino!!!

- Hipersayan.x, 20:45:27 -
:-O italiano?

- Shackra, 20:45:30 -
Ne
Via patrino!!

- Hipersayan.x, 20:46:09 -
?

- Shackra, 20:47:17 -
Mi estas paroli Esperanto
:-D
Esperanto, La lingvo internacia! :-D

- Hipersayan.x, 20:48:22 -
O_o me supera.

- Shackra, 20:48:25 -
jaja

- Hipersayan.x, 20:48:29 -
demasiado para mí

- Shackra, 20:48:31 -
xD

- Hipersayan.x, 20:48:32 -
:-P

- Shackra, 20:48:40 -
según yo te dije...
- Hipersayan.x, 20:44:11 -
こんばんは:-D
- Shackra, 20:45:03 -
Via Fratino!!!
o sea
Tu hermana!!
xD
pero quice decir, "Tu mamá!!!"
Via patrino!

- Hipersayan.x, 20:50:42 -
Corto y al paso, todavía seguís con el problema de los widgets personalizados?

- Shackra, 20:50:48 -
sip
que te hace pensar que salí de eso por mi propia cuenta? xD

- Hipersayan.x, 20:51:20 -
:-Suspiro::-/

- Shackra, 20:51:31 -
¿Te gusto mi mock up del widget?
lo hice en Inkscape :-D

- Hipersayan.x, 20:51:47 -
Bastant bueno :-)

- Shackra, 20:51:57 -
me base en el widget del Open Shot
ellos hicieron todo con GTK
y en Python
._.

- Hipersayan.x, 20:53:06 -
Te contesto rapido así podes empezar a buscar alguna solución

- Shackra, 20:53:12 -
:'D

- Hipersayan.x, 20:53:14 -
Lo que tenes que hacer

- Shackra, 20:53:23 -
donde estaría yo sin ti?
:'D

- Hipersayan.x, 20:53:49 -
(lo que pasa es que aquí ya es muy tarde)

- Shackra, 20:53:56 -
(lo sé, glol)

- Hipersayan.x, 20:54:46 -
lo que tenes que hacer es creas una clase  que herede de  QGraphicsView <http://qt-project.org/doc/qt-4.8/qgraphicsview.html>
en __init__ <http://qt-project.org/doc/qt-4.8/qgraphicsview.html>

- Shackra, 20:55:07 -
 * Shackra apunta en un papelito

- Hipersayan.x, 20:55:10 -
creas un objeto QGraphicsScene
y lo pasas al método setScene()
luego reimplementas paintEvent()

- Shackra, 20:56:10 -
 * Shackra sigue apuntando en un papelito
D:

- Hipersayan.x, 20:56:23 -
Y en paintEvent()

- Shackra, 20:56:28 -
reimplementar? D:

- Hipersayan.x, 20:56:47 -
Si, redefinís el método

- Shackra, 20:56:47 -
detalla eso más adelante, mejor...

- Hipersayan.x, 20:57:26 -
haces def paintEvent(self, event):
y abajo le pones:
QGraphicsWidget.paintEvent(event)
y luego tu código
que en este caso sería el código para dibujar
http://qt-project.org/doc/qt-4.8/qgraphicsscene.html
addLine(), addPath(), addRect(), etc., etc., etc.

- Shackra, 20:59:25 -
:-O

- Hipersayan.x, 20:59:40 -
te dejo video que también te puiede servir
http://www.youtube.com/watch?v=b35JF4LqtBs
http://www.youtube.com/watch?v=hgDd2QspuDg

- Shackra, 20:59:47 -
todo eso debajo de esa redifinicion del metodo paintEvent?

- Hipersayan.x, 20:59:59 -
exacto

- Shackra, 21:00:14 -
:-O
ok, sigue...

- Hipersayan.x, 21:00:34 -
Luego a tu clase derivada de QGraphicsWidget la podes usar como un widget normal
es solamente eso no es complicado

- Shackra, 21:01:07 -
D:
cuando leí sobre eso, parecía que si, al menos, si lo haces con código en C++

- Hipersayan.x, 21:02:53 -
Convertir código de C++ a Python es casi trivial, por lo menos los ejemplos que están basados en Qt

- Shackra, 21:03:07 -
:-Suspiro:

- Hipersayan.x, 21:03:07 -
preguntas?

- Shackra, 21:03:12 -
huh... aer,...
todo lo que necesito para dibujar, esta en http://qt-project.org/doc/qt-4.8/qgraphicsscene.html ?

- Hipersayan.x, 21:04:09 -
Sip, todo, absolutamente todo.

- Shackra, 21:04:12 -
hmmm
como crees que pueda "conectar" mi clase derivada con, por ejemplo, el widget para mostrar video
el widget de phono
(supongo que me preocupare por el asunto de los subs deslizables luego)
(supongo que me preocupare por el asunto de los subs deslizables en el mismo video luego)

- Hipersayan.x, 21:06:33 -
Haber, los widget para la linea de tiempo no tienen relacion con el widget donde mostras el video, vos diceñas los widgets del timeline por separado
y para hacer que interactúen entre ellos usas señales y slots

- Shackra, 21:07:06 -
hmmm
ya veo

- Hipersayan.x, 21:07:27 -
los losagregás a tu widget customizado
*los cuales

- Shackra, 21:07:59 -
ya, o sea, señales y slots personalizados :-D

- Hipersayan.x, 21:08:06 -
exacto

- Shackra, 21:08:09 -
y esos como se agregan?
a mi widget personalizado

- Hipersayan.x, 21:09:12 -
Así rápido reviza el código de Webcamoid:
https://github.com/hipersayanX/Webcamoid/blob/master/contents/code/v4l2tools.py
lineas 32 a 36

- Shackra, 21:09:27 -
ok...

- Hipersayan.x, 21:09:30 -
para agregar señales

- Shackra, 21:09:39 -
se nota que tienes experiencia con esta parte de Qt xD

- Hipersayan.x, 21:09:51 -
:-D
y por ejemplo linea 560
para slots

- Shackra, 21:10:45 -
M-g g RET
oh rayos...
github no es EMACS D:

- Hipersayan.x, 21:11:27 -
Bue tampoco es Kate y no me quejo XD

- Shackra, 21:11:37 -
glol

- Hipersayan.x, 21:11:56 -
preguntas aclaradas?

- Shackra, 21:12:01 -
algo asi :-D
aunque me preocupa el scrolling
porque partes del widget no pueden esconderse a tu izquierda si haces scroll a la derecha

- Hipersayan.x, 21:13:28 -
Eso se maneja desde la escena, podes establecer los limites visuales y todo eso.
eso ya queda como tarea para vos

- Shackra, 21:13:47 -
glolok
:-Ok:
veamos...
sospecho que la parte que graba sera aparte, sí o sí, de mi widget
la parte multimedia de Qt

- Hipersayan.x, 21:15:07 -
sip

- Shackra, 21:15:22 -
hmmm
hmmmmmmmmm
diay, creo que es todo

- Hipersayan.x, 21:15:49 -
perfecto :-)
お休みなさい

- Shackra, 21:16:07 -
Dankon mia amiko!
:-D
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20120702/d7671324/attachment.pgp>


More information about the PyQt mailing list