Oleksandr Yakovlyevs Embeding PyQt Tutorial.

Oleksandr Yakovlyevs Embeding PyQt Tutorial.

Dette er en kort oppl ring for a legge inn Qt-applikasjonen din i PyQt. Det antar kunnskap om bash, Python, Qt + PyQt og nippe.

Hybrid Application?

En dag oppdaget jeg at det kan v re veldig flott a bruke PyQt-skript i en Qt-applikasjon. Det antas at slik hybridapplikasjon kan ha to «grener» – c + + kode og python kode arbeider sammen, utveksler signaler mellom to disse grener, selvfolgelig mulighet til a lage nye objekter med python / pyqt og koble signal / slots beetween to deler av applikasjonen (Qt og PyQt), vel mellom Qt objekter og PyQt objekter. Vel, enda mer, med Python kan du lage nye klasser i runtime, og. Dette er nesten magisk, disse nye klaser / objekter vil fungere sammen med C ++ (Qt) del av applikasjonen.

Forste utfordring er hendelseslokke. Python og Qt-applikasjonen har sin egen hendelseslokke, og jeg har ikke funnet mate a bruke bare Qt-hendelseslokke enna. Sa vi ma bruke Python (PyQt) hendelseslokke. Det betyr neste endring i programmet: Fjernet main.cpp Opprettet main.py med samme funksjonalitet.

Vanligvis har Qt-applikasjonen ingen kritisk kode i main.cpp, sa det kan ikke v re komplisert a lage samme kode med Python. Endringen gjenspeiler ikke ytelse fordi all kode er C ++ fortsatt.

Programkoden kompileres til delt bibliotek. La oss prove det med Qt-eksempel (eksempler / soknad)

application.h.

Her har jeg lagt til signal ugyldig runScript (const QString & amp;)

application.cpp.

Jeg har lagt til en verktoyknapp «Kjor skript». Tekst av skript er innhold i QTextEdit (redaktor av applikasjonseksempel)

Na kan vi lage profil. Husk at var qt-applikasjon er delt bibliotek na.

application.pro.

Sa, vi har komplisert liten qt-applikasjon med editor og knapp «Kjor skript». La oss lage innpakning for soknaden. Vi lager dir «coreappwrap» hvor vi legger innpakning generert med slurk. Na lager vi sip-fil for vare wrappings:

coreapp.sip.

Merk at vi bruker #include «../ application.h» fordi sip genererer filer til coreappwrap /. Det er viktig a pakke signalet runScript, fordi det vil bli brukt i python-delen.

Na lager vi configure.py i henhold til Phil Thompson manual.

configure.py.

Vi brukte -Wl, -rpath ,. og -Wl, -rpath. fordi generert python-modul ligger i coreappwrap-katalogen. makefile.extra_libs = coreapp er vart Qt-program som vi har opprettet med application.pro. Det er libcoreapp.so.XXX filer.

Na er det pa tide a kompilere det hele. Forst bygger var Qt-applikasjon:

Det oppretter libcoreapp.so.XXX i «.» katalogen.

La oss forberede wrappings:

Den lager innpakningsfiler i coreappwrap.

Og kompilere dem.

Det skaper coreappwrap / coreappwrap.so. Det er python modul.

Pa slutten ma vi skrive main.py for a kjore alt.

Merk at «exec» se MainWindow variabel og brukeren har tilgang til den med skript. Du kan bruke andre variabler du onsker a bli oppnadd av skript, etc.

Du kan ogsa gjore rettelser til denne siden. Hvis du har sporsmal eller kommentarer, send dem til meg pa [email protected]

EmbedingPyQtTutorial (sist redigert 2010-07-13 12:55:09 av 213)