PyGTK

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2017. május 24-én áttekintett verziótól ; az ellenőrzések 2 szerkesztést igényelnek .
PyGTK
Típusú GUI fejlesztés
Szerző James Henstridge
Johan Dahlin
Fejlesztők közösség
Beírva Python , C
Operációs rendszer Linux és más UNIX-szerű , Windows
legújabb verzió
Állapot aktív
Engedély GNU LGPL
Weboldal pygtk.org

A PyGTK a GTK+ GUI könyvtár Python -összerendeléseinek  halmaza . A PyGTK egy ingyenes szoftver , amelyet a GNU LGPL feltételei szerint terjesztenek . A könyvtárat választották a 100 dolláros Laptop program hivatalos fejlesztési eszköztárának.

A 2.8-as verzió óta a GLib objektumok burkolói egy külön könyvtárba kerültek át - PyGObject , aminek teljesen le kell váltania a PyGTK-t a GTK + 3-as verzió használatakor. Bár a PyGTK stabil, meglehetősen fejlett, és a Python négy fő grafikus felhasználói felületének egyike, fejlesztése A szerzők 2011 -ben leállították [1] , a felhasználókat arra ösztönözték, hogy térjenek át a PyGObjectre [2] .

Példa: Hello World program

Ez a példa a Python 2.x verziójára vonatkozik. További példák találhatók a PyGTK forrásarchívumában, a példák mappában .

#!/usr/bin/env python #-*- kódolás: UTF-8 -*- import gtk def button_clicked ( gomb ): print 'Hello World!' def main (): ablak = gtk . Ablak () ablak . set_default_size ( 240 , 180 ) ablak . set_title ( 'Hello World!' ) ablak . connect ( 'destroy' , lambda w : gtk . main_quit ()) gomb = gtk . Gomb ( "Nyomja meg" ) gomb . connect ( 'clicked' , button_clicked ) gomb . mutasd () ablak . hozzáadás ( gomb ) ablak . jelen () gtk . () if __name__ == '__main__' : ()

A szemétszállítás jellemzői

A GTK+ C nyelven van megvalósítva, és saját (a Pythonnal nem teljesen integrált) referenciarendszerrel rendelkezik a GObject-ek között a már nem használt GTK-objektumok törlésére (vagyis ezen objektumok GObject szemétgyűjtő rendszer általi feldolgozására).

Ennek következtében előfordulhat, hogy a GTK-objektumokban (azaz GObject objektumok) belül tárolt Python-objektumhivatkozások (például visszahívási függvényhivatkozások ) gyenge hivatkozásokká válnak , és a Python szemétgyűjtő rendszere eltávolíthatja őket. [3]

A hivatkozások gyenge hivatkozásokká alakításának a programozó által nem szándékolt következményei lehetnek programvégrehajtási hibák, amikor például a hívott Callback függvény inicializálatlan adatokon (vagyis a Python szemétgyűjtő által megtisztított adatokon) kezd működni.

A hivatkozások gyenge hivatkozásokká való átalakítása nem történik meg mindaddig, amíg a GTK objektum Python-programban PyGTK-objektumként van leírva (vagyis amíg a programalgoritmus le nem vonja a GTK-objektumot leíró Python-objektumra mutató hivatkozásokat). Azok a GTK-objektumok azonban, amelyek más GTK-objektumok gyermekeiként hozzáadják magukat, nem tartanak fenn hivatkozást Python-leírásukra. Ezt azonban a programozó maga is megteheti (elmentheti a GTK objektum Python-leírását), ahogy például a fent leírt Hello World [4] példaprogramban is megtették .

A módszertan egy másik módja lehet a parazita jelenségek elleni védekezésnek, amikor a Python-függvényhivatkozásokat gyenge hivatkozásokká alakítják: amikor a GTK-objektumok csak olyan Python-függvényekre való hivatkozásokkal működnek, amelyek kifejezetten a Python-program hatókörében vannak tárolva (miközben megőrzik a hivatkozásokat magukon a PyGTK-objektumokon). - már nincs szükség).

Lásd még

Jegyzetek

  1. Summerfield, M. Python a gyakorlatban: jobb programok létrehozása párhuzamosság, könyvtárak és minták használatával. - Pearson Education, 2013. - P. 232. - ISBN 9780133373233 .
  2. PyGTK: GTK+ Pythonhoz (hivatalos oldal) . Letöltve: 2011. június 7. Az eredetiből archiválva : 2011. június 15.
  3. Ezt a jelenséget a ctypes modul kézikönyve is megemlíti, amely a bináris C kóddal való transzparens interakcióra készült: ctypes - Egy idegen függvénykönyvtár a Pythonhoz Archiválva 2012. október 15. a Wayback Machine -nél
  4. Ebben a példában: a "window" és a "button" változók (amelyek a GTK objektumok Python reprezentációjára mutatnak) mentésre kerültek a programból való kilépésig

Irodalom

  • Karvinen, K.; Karvinen, T. Gyártmány: Arduino robotok és modulok: hat beágyazott projekt nyílt forráskódú hardverrel és szoftverrel. - O'Reilly Media, Incorporated, 2011. - 278 p. — ISBN 9781449389710 .

Linkek