PySide + QML (alias QtQuick)

PySide + QML (alias QtQuick)
« kdy: 15. 11. 2010, 17:21:28 »
Zdravím,

chtěl bych se poradit se zkušenějšími ohledně použití PySide (LGPL alternativa PyQt od Nokie) a QML (Qt Quick). Už nějakou dobu se snažím vytvořit přehrávač s dotykovým ovládáním vhodný pro zařízení s displejem okolo 5" (mám momentálně 5" MID, kvůli kterému chci hlavně takový program napsat).

Mám takový polofunkční prototyp udělaný v PyQt, ale bohužel rekace GUI a celkově ovládání prstem má do ideálu celkem daleko.

Po vydání Qt 4.7 jsem viděl demo QML a to mě uchvátilo. Tohle je to, co chci. Mou cílovou platformou jsou Windows a Linux, což QML splňuje. Proč k tomu PySide? Mám již hotovou logiku přehrávače včetěn práce s databází v Pythonu. Navíc v C++ neumím.

Zatím se mi ale nedaří najít moc informací ohledně vývoje aplikací v PySide+QML. Našel jsem nějaké příklady, které ale na Windows nefungují. V Ubuntu se mi zase nechce PySide nainstalovat kvůli konfliktům ve verzi. Navíc mi pořád trochu uniká logika fungování. Pokud to chápu dobře, tak reakce GUI vlastně neřeším v Pythonu, ale píšu je v .qml souboru pomocí JavaScriptu (který neumím, ale holt bych se to doučil). Jenže mi není moc jasné, jak by fungovala následující věc:

Základem je pro mě menu pro výběr souboru, který má hrát. Představoval bych si ho jako 5 sloupců, ve kterých budou položky: dynamický playlist/žánr/umělec/album/skladba. V landscape režimu budou zobrazeny 2 sloupce, v portrait pouze jeden. Mezi sloupci se budu moct pohybovat posouváním v horizontálním směru. Vertikálně si potom budu vybírat položku z daného sloupce. A teď v čem vidím problém: Vyberu si ve sloupci "umělec" třeba "The Beatles". V tomto okamžiku potřebuji, aby se mi sloupce napravo zaplnily alby Beatles a všemi skladbami. Zároveň sloupec "umělec" odjede z displaye doleva a zobrazí se sloupec "alba" (již pouze s alby Beatles). Otázkou nyní je, jestli se tohle dá provést v dostatečně krátkém čase, aby reakce GUI byla "rozumná".

V podstatě to znamená, že GUI (přes JavaScript) musí poslat jádru programu informaci, že jsem kliknul na "The Beatles" ve sloupečku "umělec". V Pythonu se spojím s sqlite databází a vytáhnu všechna alba a skladby od Beatles. Tyto dva seznamy potom pošlu GUI, které musí dané listy vykreslit. Potom se sloupce posunou doleva tak, aby se zobrazil sloupec "album". Je toto reálné? Vzhledem k tomu, že mířím na přenosná zařízení s nevalným výkonem, tak se bojím, jestli nejsem moc náročný. Na druhou stranu podobně fungující GUI mají některé přehrávače na Androidu psané v Javě a fungují obstojně rychle.

Co si vůbec o mém nápadu myslíte? Je to reálné nebo to mám rovnou vzdát?