P y t h o n 3 a n d Q t 5 w i t h Q M L T h o m a s P e r l , J o l l a L t d . Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 C o m p a n y C o n f i d e n t i a l
Overview ● B a c k g r o u n d ● C o m p a r i s o n ● A P I O v e r v i e w ● S t a t u s a n d R o a d m a p ● S n a k e s o n a B o a t Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Background ● 2 0 0 7 : P y G t k / H i l d o n o n N 8 0 0 / N 8 1 0 ● 2 0 0 9 : P y M a e m o / H i l d o n o n N 9 0 0 ● 2 0 1 1 : P y S i d e / Q t 4 o n N 9 ● 2 0 1 3 : P y O t h e r S i d e o n S a i l f i s h O S ● O n o t h e r p l a t f o r m s : – S L 4 A , P y S 6 0 , B B - T a r t , . . . Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Comparison: License/Versions ● P y Q t : G P L ' d a n d c o m m e r c i a l b i n d i n g s – Q t 4 a n d Q t 5 – P y t h o n 2 a n d P y t h o n 3 ● P y S i d e : L G P L ' d b i n d i n g s + g e n e r a t o r – Q t 4 o n l y a t t h e m o m e n t – P y t h o n 2 a n d P y t h o n 3 ● P y O t h e r S i d e : I S C / B S D Q M L P l u g i n – Q t 5 ( Q t 4 s u p p o r t a v a i l a b l e i n G i t h i s t o r y ) – P y t h o n 3 ( P y t h o n 2 s t i l l w o r k s , b u t u n s u p p o r t e d ) Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Comparison: Performance ● S t a r t u p t i m e ( t o f i r s t v i s i b l e s c r e e n ) – P y S i d e / P y Q t : C P y t h o n + P y t h o n c o d e + B i n d i n g s + Q t – P y O t h e r S i d e : Q t o n l y ( P y t h o n l o a d i n g d e l a y e d u n t i l u s e ) ● R e s p o n s i v e n e s s – P y S i d e / P y Q t : S y n c h r o n o u s b y d e f a u l t – P y O t h e r S i d e : A s y n c h r o n o u s b y d e f a u l t ● L i b r a r y s i z e ( s p a c e u s a g e , m e m o r y f o o t p r i n t ) – P y S i d e : Q t C o r e ~ 2 . 8 M i B , Q t G u i : ~ 1 2 . 5 M i B , . . . – P y O t h e r S i d e : ~ 1 4 5 K i B Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Comparison: Usage ● P y S i d e / P y Q t – P y t h o n i n t e r p r e t e r u s e s Q t / Q M L t o d i s p l a y U I ● P y O t h e r S i d e – Q M L u s e s P y t h o n a s a d a t a p r o v i d e r / b a c k e n d Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
API Overview: QML Methods void addImportPath(path) void setHandler(event, callback) QVariant evaluate(expr) void importModule(name, callback) void call(func, args, callback) Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
API Overview: QML Signals received(data) error(traceback) Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
API Overview: Python Module import pyotherside pyotherside.send(*args) pyotherside.atexit(f) Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
API Overview: Image Provider def func(image_id, size): return (pixels, (width, height), format) pyotherside.set_image_provider(func) Image { src: 'image://python/<image_id>' } Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Current Status ● D e s k t o p P l a t f o r m s f u l l y s u p p o r t e d ● S a i l f i s h O S – B e s t s u p p o r t : A l r e a d y i n M e r a n d S a i l f i s h O S r e p o s i t o r i e s ● B l a c k b e r r y 1 0 – P y t h o n 3 f r o m s y s t e m , s h i p Q t 5 a n d P y O t h e r S i d e i n a p p ● A n d r o i d – S h i p P y t h o n 3 + Q t 5 + P y O t h e r S i d e i n a p p Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Roadmap ● E m b e d P y t h o n s c r i p t s i n Q t R e s o u r c e s ● S t a t i c l i n k i n g o f l i b p y t h o n + m o d u l e s ● S u p p o r t f o r P y P y ( J I T ) ● W r a p p i n g P y t h o n o b j e c t s a s Q M L / J S v a l u e s Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Snakes on a Boat Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Q&A Project: http://thp.io/2011/pyotherside/ Source: http://github.com/thp/pyotherside/ @thp4 / m@thp.io Q t D e v e l o p e r D a y s 2 0 1 3 , B e r l i n , 2 0 1 3 - 1 0 - 0 9 P y t h o n 3 a n d Q t 5 w i t h Q M L , T h o m a s P e r l
Recommend
More recommend