PyGTK
| PyGTK | |
|---|---|
| |
| Typ | Vývoj GUI |
| Autor |
James Henstridge Johan Dahlin |
| Vývojáři | společenství |
| Zapsáno v | Python , C |
| Operační systém | Linux a další UNIXové , Windows |
| Nejnovější verze | |
| Stát | aktivní |
| Licence | GNU LGPL |
| webová stránka | pygtk.org |
PyGTK je sada vazeb Pythonu pro knihovnu GTK+ GUI . PyGTK je svobodný software a je distribuován za podmínek GNU LGPL . Knihovna byla vybrána jako oficiální vývojová sada pro program Laptop za 100 USD .
Od verze 2.8 byly obaly pro objekty GLib přesunuty do samostatné knihovny - PyGObject , která by měla zcela nahradit PyGTK při použití GTK + verze 3. Přestože je PyGTK stabilní, poměrně rozvinutá a jedna ze čtyř hlavních GUI knihoven pro Python, její vývoj byl zastaven autory v roce 2011 [1] , uživatelé byli vyzváni k migraci na PyGObject [2] .
Příklad: Program Hello World
Tento příklad je pro Python verze 2.x. Další příklady lze nalézt ve zdrojovém archivu PyGTK ve složce s příklady .
#!/usr/bin/env python
#-*- kódování: UTF-8 -*-
importovat gtk
def button_clicked ( button ):
print 'Ahoj světe!'
def main ():
okno = gtk . Okno ()
okno . set_default_size ( 240 , 180 )
okno . set_title ( 'Ahoj světe!' )
okno . připojit ( 'destroy' , lambda w : gtk . main_quit ())
tlačítko = gtk . Tlačítko ( 'Press Me' )
tlačítko . tlačítko připojit ( 'clicked' , button_clicked )
. ukázat ()
okno . přidat ( tlačítko )
okno . přítomný ()
gtk . hlavní ()
if __name__ == '__main__' :
main ()
Vlastnosti sběru odpadu
GTK+ je implementováno v C a má svůj vlastní (ne plně integrovaný s Pythonem) referenční systém mezi GObjects pro mazání GTK objektů, které se již nepoužívají (tedy pro zpracování těchto objektů systémem GObject garbage collection ).
V důsledku toho je možné, že odkazy na objekty Pythonu (jako jsou reference funkcí zpětného volání ) uložené v objektech GTK (tj. objekty GObject) se stanou slabými referencemi a mohou být odstraněny systémem garbage collection v Pythonu. [3]
Důsledkem programátorem nezamýšleného přeměny referencí na slabé reference mohou být chyby při provádění programu, kdy například na neinicializovaných datech (tedy na datech vyčištěných pythonským garbage collectorem) začne fungovat volaná funkce Callback.
Ke konverzi odkazů na slabé reference nedojde , dokud je objekt GTK stále popsán jako objekt PyGTK v programu Python (to znamená, dokud algoritmus programu nezruší rozsah odkazů na objekt Python popisující objekt GTK). Objekty GTK, které se přidají jako potomci jiných objektů GTK, si však neuchovají odkaz na svůj popis v Pythonu. Programátor to však může udělat (uložit pythonovský popis objektu GTK) sám, jak to bylo například provedeno ve výše popsaném příkladovém programu Hello World [4] .
Metodologie může být také dalším způsobem ochrany proti parazitním jevům při přeměně odkazů na funkce Pythonu na slabé reference: když objekty GTK pracují pouze s odkazy na funkce Pythonu, které jsou výslovně uloženy v rozsahu programu Python (při zachování odkazů na samotné objekty PyGTK - již není potřeba).
Viz také
Poznámky
- ↑ Summerfield, M. Python v praxi: Vytvářejte lepší programy pomocí souběžnosti, knihoven a vzorů. - Pearson Education, 2013. - S. 232. - ISBN 9780133373233 .
- ↑ PyGTK: GTK+ pro Python (oficiální stránka) . Získáno 7. června 2011. Archivováno z originálu 15. června 2011.
- ↑ Tento jev je také zmíněn v manuálu k modulu ctypes, který je navržen tak, aby transparentně interagoval s binárním C kódem: ctypes - Knihovna cizích funkcí pro Python Archived 15. října 2012 na Wayback Machine
- ↑ V tomto příkladu: proměnné "window" a "button" (ukazující na Python reprezentaci objektů GTK) byly uloženy, dokud se program neukončil
Literatura
- Karvinen, K.; Karvinen, T. Make: Arduino Bots and Gadgets: Six Embedded Projects with Open Source Hardware and Software. - O'Reilly Media, Incorporated, 2011. - 278 s. — ISBN 9781449389710 .
