Introducci´on a PyQt
“¿Qui´en dijo que crear e implementar interfaces es dificil?”
Cristi´an D. Maureira Fredes
saint@archl...
Introducci´on
Desarrollo de Software
2 of 30
Introducci´on
Desarrollo de Software
Dise˜no.
2 of 30
Introducci´on
Desarrollo de Software
Dise˜no.
Implementaci´on.
2 of 30
Introducci´on
Desarrollo de Software
Dise˜no.
Implementaci´on.
A veces puede ser una pesadilla!
2 of 30
Introducci´on
Desarrollo de Software
Dise˜no.
Implementaci´on.
A veces puede ser una pesadilla!
...entonces Qt viene en nu...
Introducci´on
Desarrollo de Software
Dise˜no.
Implementaci´on.
A veces puede ser una pesadilla!
...entonces Qt viene en nu...
Introducci´on
¿Qu´e es Python?
Lenguaje de programaci´on de alto nivel.
3 of 30
Introducci´on
¿Qu´e es Python?
Lenguaje de programaci´on de alto nivel.
Guido van Rossum (fines de los ochenta).
3 of 30
Introducci´on
¿Qu´e es Python?
Lenguaje de programaci´on de alto nivel.
Guido van Rossum (fines de los ochenta).
Nace con l...
Introducci´on
¿Qu´e es Python?
Lenguaje de programaci´on de alto nivel.
Guido van Rossum (fines de los ochenta).
Nace con l...
Introducci´on
¿Qu´e es Python?
Lenguaje de programaci´on de alto nivel.
Guido van Rossum (fines de los ochenta).
Nace con l...
Introducci´on
¿Qu´e es Python?
Lenguaje de programaci´on de alto nivel.
Guido van Rossum (fines de los ochenta).
Nace con l...
Introducci´on
¿Qu´e es Python?
Lenguaje de programaci´on de alto nivel.
Guido van Rossum (fines de los ochenta).
Nace con l...
Introducci´on
¿Qu´e es Qt?
Biblioteca multiplataforma.
4 of 30
Introducci´on
¿Qu´e es Qt?
Biblioteca multiplataforma.
Es un framework desarrollado en C++.
4 of 30
Introducci´on
¿Qu´e es Qt?
Biblioteca multiplataforma.
Es un framework desarrollado en C++.
Permite desarrollo de UI, DB, ...
Introducci´on
¿Qu´e es Qt?
Biblioteca multiplataforma.
Es un framework desarrollado en C++.
Permite desarrollo de UI, DB, ...
Introducci´on
¿Qu´e es Qt?
Biblioteca multiplataforma.
Es un framework desarrollado en C++.
Permite desarrollo de UI, DB, ...
Introducci´on
Tenemos Qt con distintos sabores
PyQt - Bindings GPL/Comercial para Python (Riverbank)
PySide - LGPL binding...
Introducci´on
¿Donde est´a Qt?
VIDEO!
6 of 30
Introducci´on
Herramientas de Ayuda
Qt-Creator
7 of 30
Introducci´on
Herramientas de Ayuda
Designer
8 of 30
Introducci´on
Hello World
import sys
from PyQt4 . QtGui import QLabel , QApplication
app = QApplication ( sys . argv )
l a...
Introducci´on
Simple
import sys
from PyQt4 import QtGui
app = QtGui . QApplication ( sys . argv )
widget = QtGui . QWidget...
Conceptos
OO
Es importante que recordemos la Orientaci´on a Objetos.
Es de vital importancia, para Python y para Qt.
11 of...
Conceptos
Jerarqu´ıa
Su estructura es modular.
> 300 clases.
> 6000 m´etodos.
En los cuales podemos encontrar:
QtCore
QtGu...
Conceptos
Comportamiento
Tenemos Objetos (elementos)
Tenemos Se˜nales (por cada elemento)
13 of 30
Conceptos
Comportamiento
14 of 30
Conceptos
Comportamiento
Cada objeto tiene una o m´as se˜nales:
connect()
valueChanged()
textChanged()
accepted()
triggere...
Ejemplos
Lineas
import s y s
from PyQt4 import QtGui
from l i n e a s import ∗
c l a s s myGUI( QtGui . QWidget ) :
def i ...
Ejemplos
Listas
import s y s
from PyQt4 import QtGui
from l i s t a s import ∗
c l a s s myGUI( QtGui . QWidget ) :
def i ...
Ejemplos
Seleccion
import s y s
from PyQt4 import QtCore , QtGui
from s e l e c c i o n import ∗
c l a s s myGUI( QtGui . ...
Ejemplos
Fuentes
import s y s
from PyQt4 import QtGui
from f o n t s import ∗
c l a s s myGUI( QtGui . QWidget ) :
def i n...
Ejemplos
Calendario
import s y s
from PyQt4 import QtGui
from c a l e n d a r import ∗
c l a s s myGUI( QtGui . QWidget ) ...
Ejemplos
Tabs
import s y s
from PyQt4 import QtGui
from tabs import ∗
c l a s s myGUI( QtGui . QWidget ) :
def i n i t ( s...
Ejemplos
Formulario
import os , s y s
from PyQt4 import QtCore , QtGui , Qt
from f o r m u l a r i o import ∗
c l a s s my...
Ejemplos
Menu
import os , s y s
from PyQt4 import QtCore , QtGui , Qt
from menu import ∗
c l a s s myGUI( QtGui . QMainWin...
Ejemplos
Drag and Drop
import s y s
from PyQt4 import QtGui
c l a s s DragDrop ( QtGui . QDialog ) :
def i n i t ( s e l f...
Ejemplos
Multimedia - Audio
import s y s
from PyQt4 import QtGui
from PyQt4 . phonon import Phonon
app = QtGui . QApplicat...
Ejemplos
Multimedia - Video
import s y s
from PyQt4 import QtGui
from PyQt4 . phonon import Phonon
app = QtGui . QApplicat...
Ejemplos
openWall
Veamos el codigo!
27 of 30
Ejemplos
µBot Interface
Veamos el codigo!
28 of 30
Conclusiones
C++ es un muy buen lenguaje, pero Python es m´as simple.
Qt nos ofrece una amplia cantidad de ´Areas.
Al unir...
¿Preguntas?
30 of 30
Upcoming SlideShare
Loading in …5
×

Introducción a PyQt

1,062 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,062
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
75
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Introducción a PyQt

  1. 1. Introducci´on a PyQt “¿Qui´en dijo que crear e implementar interfaces es dificil?” Cristi´an D. Maureira Fredes saint@archlinux.cl Comunidad KDE Chile y Arch Linux Chile 1 de noviembre de 2010
  2. 2. Introducci´on Desarrollo de Software 2 of 30
  3. 3. Introducci´on Desarrollo de Software Dise˜no. 2 of 30
  4. 4. Introducci´on Desarrollo de Software Dise˜no. Implementaci´on. 2 of 30
  5. 5. Introducci´on Desarrollo de Software Dise˜no. Implementaci´on. A veces puede ser una pesadilla! 2 of 30
  6. 6. Introducci´on Desarrollo de Software Dise˜no. Implementaci´on. A veces puede ser una pesadilla! ...entonces Qt viene en nuestro rescate. 2 of 30
  7. 7. Introducci´on Desarrollo de Software Dise˜no. Implementaci´on. A veces puede ser una pesadilla! ...entonces Qt viene en nuestro rescate. y todo es mejor a´un con Python. 2 of 30
  8. 8. Introducci´on ¿Qu´e es Python? Lenguaje de programaci´on de alto nivel. 3 of 30
  9. 9. Introducci´on ¿Qu´e es Python? Lenguaje de programaci´on de alto nivel. Guido van Rossum (fines de los ochenta). 3 of 30
  10. 10. Introducci´on ¿Qu´e es Python? Lenguaje de programaci´on de alto nivel. Guido van Rossum (fines de los ochenta). Nace con la idea de poder tener un c´odigo legible (simple). 3 of 30
  11. 11. Introducci´on ¿Qu´e es Python? Lenguaje de programaci´on de alto nivel. Guido van Rossum (fines de los ochenta). Nace con la idea de poder tener un c´odigo legible (simple). Multiparadigma (OO,Imperativo,Funcional). 3 of 30
  12. 12. Introducci´on ¿Qu´e es Python? Lenguaje de programaci´on de alto nivel. Guido van Rossum (fines de los ochenta). Nace con la idea de poder tener un c´odigo legible (simple). Multiparadigma (OO,Imperativo,Funcional). Scripting (interpretado). 3 of 30
  13. 13. Introducci´on ¿Qu´e es Python? Lenguaje de programaci´on de alto nivel. Guido van Rossum (fines de los ochenta). Nace con la idea de poder tener un c´odigo legible (simple). Multiparadigma (OO,Imperativo,Funcional). Scripting (interpretado). Tipificado din´amico. 3 of 30
  14. 14. Introducci´on ¿Qu´e es Python? Lenguaje de programaci´on de alto nivel. Guido van Rossum (fines de los ochenta). Nace con la idea de poder tener un c´odigo legible (simple). Multiparadigma (OO,Imperativo,Funcional). Scripting (interpretado). Tipificado din´amico. Multiplataforma, Open Source, ... 3 of 30
  15. 15. Introducci´on ¿Qu´e es Qt? Biblioteca multiplataforma. 4 of 30
  16. 16. Introducci´on ¿Qu´e es Qt? Biblioteca multiplataforma. Es un framework desarrollado en C++. 4 of 30
  17. 17. Introducci´on ¿Qu´e es Qt? Biblioteca multiplataforma. Es un framework desarrollado en C++. Permite desarrollo de UI, DB, XML, WebKit, Multimedia, Networking, OpenGL, scripting, etc. 4 of 30
  18. 18. Introducci´on ¿Qu´e es Qt? Biblioteca multiplataforma. Es un framework desarrollado en C++. Permite desarrollo de UI, DB, XML, WebKit, Multimedia, Networking, OpenGL, scripting, etc. NO es s´olo una biblioteca gr´afica. (como otras....... 4 of 30
  19. 19. Introducci´on ¿Qu´e es Qt? Biblioteca multiplataforma. Es un framework desarrollado en C++. Permite desarrollo de UI, DB, XML, WebKit, Multimedia, Networking, OpenGL, scripting, etc. NO es s´olo una biblioteca gr´afica. (como otras....... ..................GTK) 4 of 30
  20. 20. Introducci´on Tenemos Qt con distintos sabores PyQt - Bindings GPL/Comercial para Python (Riverbank) PySide - LGPL bindings para Python (OpenBossa/Nokia) Qyoto - Bindings para C# y .NET QtRuby - Bindings para Ruby. Qt Jambi - Bindings para Java. Ada, Perl, Pascal, PHP, Haskell, Lua, Dao, D. 5 of 30
  21. 21. Introducci´on ¿Donde est´a Qt? VIDEO! 6 of 30
  22. 22. Introducci´on Herramientas de Ayuda Qt-Creator 7 of 30
  23. 23. Introducci´on Herramientas de Ayuda Designer 8 of 30
  24. 24. Introducci´on Hello World import sys from PyQt4 . QtGui import QLabel , QApplication app = QApplication ( sys . argv ) l a b e l = QLabel ( ” Hello World” ) l a b e l . show () sys . e x i t ( app . exec ( ) ) 9 of 30
  25. 25. Introducci´on Simple import sys from PyQt4 import QtGui app = QtGui . QApplication ( sys . argv ) widget = QtGui . QWidget () widget . r e s i z e (250 , 150) widget . setWindowTitle ( ’ simple ’ ) widget . show () sys . e x i t ( app . exec ( ) ) 10 of 30
  26. 26. Conceptos OO Es importante que recordemos la Orientaci´on a Objetos. Es de vital importancia, para Python y para Qt. 11 of 30
  27. 27. Conceptos Jerarqu´ıa Su estructura es modular. > 300 clases. > 6000 m´etodos. En los cuales podemos encontrar: QtCore QtGui QtSvg QtSQL ... 12 of 30
  28. 28. Conceptos Comportamiento Tenemos Objetos (elementos) Tenemos Se˜nales (por cada elemento) 13 of 30
  29. 29. Conceptos Comportamiento 14 of 30
  30. 30. Conceptos Comportamiento Cada objeto tiene una o m´as se˜nales: connect() valueChanged() textChanged() accepted() triggered() ... 15 of 30
  31. 31. Ejemplos Lineas import s y s from PyQt4 import QtGui from l i n e a s import ∗ c l a s s myGUI( QtGui . QWidget ) : def i n i t ( s e l f , parent=None ) : QtGui . QWidget . i n i t ( s e l f , parent ) s e l f . u i = U i L i n e s () s e l f . u i . setupUi ( s e l f ) s e l f . u i . button . c l i c k e d . connect ( s e l f . buttonChange ) def buttonChange ( s e l f ) : t e x t = s e l f . u i . l i n e . t e x t () s e l f . u i . l a b e l . setText ( t e x t ) s e l f . u i . l i n e . setText ( ’ ’ ) i f name == ” m a i n ” : app = QtGui . QApplication ( s y s . argv ) myapp = myGUI () myapp . show () s y s . e x i t ( app . exec ( ) ) 16 of 30
  32. 32. Ejemplos Listas import s y s from PyQt4 import QtGui from l i s t a s import ∗ c l a s s myGUI( QtGui . QWidget ) : def i n i t ( s e l f , parent=None ) : QtGui . QWidget . i n i t ( s e l f , parent ) s e l f . u i = U i L i s t a s () s e l f . u i . setupUi ( s e l f ) s e l f . l i n e a s = [ ] s e l f . u i . addButton . c l i c k e d . connect ( s e l f . addButtonPressed ) s e l f . u i . delButton . c l i c k e d . connect ( s e l f . delButtonPressed ) s e l f . u i . closeButton . c l i c k e d . connect ( s e l f . c l o s e ) def addButtonPressed ( s e l f ) : t e x t = s e l f . u i . l i n e . t e x t () s e l f . l i n e a s . append ( t e x t ) s e l f . u i . l i s t . addItem ( t e x t ) s e l f . u i . l i n e . setText ( ’ ’ ) def delButtonPressed ( s e l f ) : item = s e l f . u i . l i s t . c u r r e n t I t e m () t e x t = item . t e x t () j=0 f o r i i n s e l f . l i n e a s : i f i == t e x t : del s e l f . l i n e a s [ j ] j = j + 1 s e l f . u i . l i s t . c l e a r () 17 of 30
  33. 33. Ejemplos Seleccion import s y s from PyQt4 import QtCore , QtGui from s e l e c c i o n import ∗ c l a s s myGUI( QtGui . QWidget ) : def i n i t ( s e l f , parent=None ) : QtGui . QWidget . i n i t ( s e l f , parent ) s e l f . u i = U i s e l e c c i o n () s e l f . u i . setupUi ( s e l f ) s e l f . u i . addButton . c l i c k e d . connect ( s e l f . a p p l y F i l t e r ) s e l f . f i l l () def f i l l ( s e l f ) : s e l f . nombres = [ ’ C r i s t i a n ’ , ’ I g n a c i o ’ , ’ G a b r i e l ’ , ’ C h r i s t o p h e r ’ , ’ Arnaldo ’ , ’ Jaime ’ , ’ S e r g i o ’ , ’ Yonathan ’ ] f o r i i n s e l f . nombres : s e l f . u i . comboBox . addItem ( i ) s e l f . personas = [ ’ Yonathan Dossow ’ , ’ Jaime Peldoza ’ , ’ Jaime Oyarzun ’ , ’ Arnaldo Garat ’ , ’ S e r g i o Morales ’ , 18 of 30
  34. 34. Ejemplos Fuentes import s y s from PyQt4 import QtGui from f o n t s import ∗ c l a s s myGUI( QtGui . QWidget ) : def i n i t ( s e l f , parent=None ) : QtGui . QWidget . i n i t ( s e l f , parent ) s e l f . u i = U i f o n t s () s e l f . u i . setupUi ( s e l f ) s e l f . u i . fontComboBox . currentFontChanged . connect ( s e l f . changeFont ) def changeFont ( s e l f ) : s e l f . u i . f o n t . setFont ( s e l f . u i . fontComboBox . currentFont ( ) ) i f name == ” m a i n ” : app = QtGui . QApplication ( s y s . argv ) myapp = myGUI () myapp . show () s y s . e x i t ( app . exec ( ) ) 19 of 30
  35. 35. Ejemplos Calendario import s y s from PyQt4 import QtGui from c a l e n d a r import ∗ c l a s s myGUI( QtGui . QWidget ) : def i n i t ( s e l f , parent=None ) : QtGui . QWidget . i n i t ( s e l f , parent ) s e l f . u i = Ui Calendar () s e l f . u i . setupUi ( s e l f ) s e l f . u i . calendarWidget . c l i c k e d . connect ( s e l f . changeDate ) def changeDate ( s e l f ) : s e l f . u i . l i n e E d i t . setText ( s e l f . u i . calendarWidget . s e l e c t e d D a t e ( ) . t o S t r i n g ( ) ) i f name == ” m a i n ” : app = QtGui . QApplication ( s y s . argv ) myapp = myGUI () myapp . show () s y s . e x i t ( app . exec ( ) ) 20 of 30
  36. 36. Ejemplos Tabs import s y s from PyQt4 import QtGui from tabs import ∗ c l a s s myGUI( QtGui . QWidget ) : def i n i t ( s e l f , parent=None ) : QtGui . QWidget . i n i t ( s e l f , parent ) s e l f . u i = U i t a b s () s e l f . u i . setupUi ( s e l f ) i f name == ” m a i n ” : app = QtGui . QApplication ( s y s . argv ) myapp = myGUI () myapp . show () s y s . e x i t ( app . exec ( ) ) 21 of 30
  37. 37. Ejemplos Formulario import os , s y s from PyQt4 import QtCore , QtGui , Qt from f o r m u l a r i o import ∗ c l a s s myGUI( QtGui . QWidget ) : def i n i t ( s e l f , parent=None ) : QtGui . QWidget . i n i t ( s e l f , parent ) s e l f . u i = Ui form () s e l f . u i . setupUi ( s e l f ) s e l f . sex , s e l f . name = None , None s e l f . day , s e l f . month , s e l f . year = None , None , None s e l f . u i . male . c l i c k e d . connect ( s e l f . changeRadioMale ) s e l f . u i . female . c l i c k e d . connect ( s e l f . changeRadioFemale ) s e l f . u i . name . textChanged . connect ( s e l f . changeName ) s e l f . u i . day . valueChanged . connect ( s e l f . changeDay ) s e l f . u i . month . valueChanged . connect ( s e l f . changeMonth ) s e l f . u i . year . valueChanged . connect ( s e l f . changeYear ) s e l f . u i . buttonBox . accepted . connect ( s e l f . answer ) s e l f . u i . buttonBox . r e j e c t e d . connect ( s e l f . c l o s e ) s e l f . u i . year . setMaximum (2010) def changeRadioMale ( s e l f ) : s e l f . sex = ”Hombre” def changeRadioFemale ( s e l f ) : s e l f . sex = ” Mujer ”22 of 30
  38. 38. Ejemplos Menu import os , s y s from PyQt4 import QtCore , QtGui , Qt from menu import ∗ c l a s s myGUI( QtGui . QMainWindow ) : def i n i t ( s e l f , parent=None ) : QtGui . QWidget . i n i t ( s e l f , parent ) s e l f . u i = Ui MainWindow () s e l f . u i . setupUi ( s e l f ) s e l f . u i . a c t i o n T e s t . t r i g g e r e d . connect ( s e l f . t e s t A c t i o n ) s e l f . u i . a c t i o n E x i t . t r i g g e r e d . connect ( s e l f . c l o s e ) s e l f . u i . actionAbout . t r i g g e r e d . connect ( s e l f . aboutAction ) def t e s t A c t i o n ( s e l f ) : p r i n t ” t e s t ” def aboutAction ( s e l f ) : p r i n t ” about ” i f name == ” m a i n ” : app = QtGui . QApplication ( s y s . argv ) myapp = myGUI () myapp . show () s y s . e x i t ( app . exec ( ) ) 23 of 30
  39. 39. Ejemplos Drag and Drop import s y s from PyQt4 import QtGui c l a s s DragDrop ( QtGui . QDialog ) : def i n i t ( s e l f , parent=None ) : QtGui . QDialog . i n i t ( s e l f , parent ) s e l f . r e s i z e (180 , 60) e d i t = QtGui . QLineEdit ( ’ ’ , s e l f ) e d i t . setDragEnabled ( True ) e d i t . move (20 , 20) s c r e e n = QtGui . QDesktopWidget ( ) . screenGeometry () s i z e = s e l f . geometry () i f name == ” m a i n ” : app = QtGui . QApplication ( s y s . argv ) icon = DragDrop () icon . show () s y s . e x i t ( app . exec ( ) ) 24 of 30
  40. 40. Ejemplos Multimedia - Audio import s y s from PyQt4 import QtGui from PyQt4 . phonon import Phonon app = QtGui . QApplication ( s y s . argv ) u r l=” A i r b e a t P r o j e c t−AirbeatOne . mp3” w = QtGui . QWidget () audio = Phonon . c r e a t e P l a y e r ( Phonon . MusicCategory , Phonon . MediaSource ( u r l )) w. setMinimumSize (100 ,100) w. show () audio . play () s y s . e x i t ( app . exec ( ) ) 25 of 30
  41. 41. Ejemplos Multimedia - Video import s y s from PyQt4 import QtGui from PyQt4 . phonon import Phonon app = QtGui . QApplication ( s y s . argv ) u r l=” qt . f l v ” w = QtGui . QWidget () p l a y e r = Phonon . VideoPlayer ( Phonon . VideoCategory ,w) p l a y e r . load ( Phonon . MediaSource ( u r l )) w. setMinimumSize (400 ,400) topLayout = QtGui . QVBoxLayout (w) topLayout . addWidget ( p l a y e r ) w. setLayout ( topLayout ) w. show () p l a y e r . play () s y s . e x i t ( app . exec ( ) ) 26 of 30
  42. 42. Ejemplos openWall Veamos el codigo! 27 of 30
  43. 43. Ejemplos µBot Interface Veamos el codigo! 28 of 30
  44. 44. Conclusiones C++ es un muy buen lenguaje, pero Python es m´as simple. Qt nos ofrece una amplia cantidad de ´Areas. Al unir dos elementos simples, obtenemos algo genial. No es solo un juguete, se pueden hacer cosas serias. Abundan tutoriales en la red. Buena documentaci´on. F´acil de aprender. 29 of 30
  45. 45. ¿Preguntas? 30 of 30

×