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] .
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 . fő () if __name__ == '__main__' : fő ()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).
GUI elemek eszközkészletei (készletei) . | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
alacsony szintű |
| ||||||||||||||||||||||||||
magas szintű |
|
Piton | |
---|---|
Közösség | |
Megvalósítások | |
Egyéb |
|