PyGTK
| PyGTK | |
|---|---|
| |
| Type | GUI udvikling |
| Forfatter |
James Henstridge Johan Dahlin |
| Udviklere | fællesskab |
| Skrevet i | Python , C |
| Operativ system | Linux og andre UNIX- lignende Windows |
| nyeste version | |
| Stat | aktiv |
| Licens | GNU LGPL |
| Internet side | pygtk.org |
PyGTK er et sæt Python -bindinger til GTK+ GUI- biblioteket . PyGTK er gratis software og distribueres under betingelserne i GNU LGPL . Biblioteket blev valgt som det officielle udviklingsværktøj til $100 Laptop -programmet.
Siden version 2.8 er wrappers til GLib -objekter blevet flyttet til et separat bibliotek - PyGObject , som helt burde erstatte PyGTK ved brug af GTK + version 3. Selvom PyGTK er stabilt, ret udviklet og et af de fire primære GUI-biblioteker for Python, er dets udvikling blev stoppet af forfatterne i 2011 [1] , blev brugerne opfordret til at migrere til PyGObject [2] .
Eksempel: Hello World-program
Dette eksempel er for Python version 2.x. Flere eksempler kan findes i PyGTK-kildearkivet, i mappen eksempler .
#!/usr/bin/env python
#-*- kodning: UTF-8 -*-
import gtk
def button_clicked ( knap ):
udskriv 'Hello World!'
def main ():
vindue = gtk . Vindue ()
vindue . set_default_size ( 240 , 180 )
vindue . set_title ( 'Hej verden!' )
vindue . forbinde ( 'ødelægge' , lambda w : gtk . main_quit ())
knap = gtk . Knap ( 'Tryk på mig' )
knap . connect ( 'klikket' , button_clicked )
knap . vis ()
vindue . tilføj ( knap )
vindue . til stede ()
gtk . vigtigste ()
if __name__ == '__main__' :
main ()
Funktioner ved affaldsopsamling
GTK+ er implementeret i C og har sit eget (ikke fuldt integreret med Python) referencesystem mellem GObjects til sletning af GTK-objekter, der ikke længere bruges (det vil sige til behandling af disse objekter af GObject- affaldsopsamlingssystemet ).
Som en konsekvens heraf er det muligt, at Python-objektreferencer (såsom tilbagekaldsfunktionsreferencer ) gemt inde i GTK-objekter (dvs. GObject-objekter) bliver svage referencer og kan fjernes af Pythons affaldsindsamlingssystem. [3]
Konsekvensen af at omdanne referencer til svage referencer utilsigtet af programmøren kan være fejl under programafviklingen, når for eksempel den kaldede Callback-funktion begynder at fungere på ikke-initialiserede data (det vil sige data renset op af Python-skraldsamleren).
Konverteringen af referencer til svage referencer vil ikke ske, så længe GTK-objektet stadig beskrives som et PyGTK-objekt i Python-programmet (det vil sige indtil programalgoritmen de-scoperer referencer til Python-objektet, der beskriver GTK-objektet). GTK-objekter, der tilføjer sig selv som børn af andre GTK-objekter, bevarer dog ikke en reference til deres Python-beskrivelse. Programmøren kan dog selv gøre dette (gemme Python-beskrivelsen af GTK-objektet), som det for eksempel blev gjort i eksempelprogrammet Hello World [4] beskrevet ovenfor .
Metodologi kan også være en anden måde at beskytte mod parasitære fænomener, når Python-funktionsreferencer omdannes til svage referencer: når GTK-objekter kun fungerer med referencer til Python-funktioner, der er eksplicit gemt i Python-programmets omfang (medens referencer på selve PyGTK-objekterne bevares - der er ikke længere et behov).
Se også
Noter
- ↑ Summerfield, M. Python i praksis: Opret bedre programmer ved hjælp af samtidighed, biblioteker og mønstre. - Pearson Education, 2013. - S. 232. - ISBN 9780133373233 .
- ↑ PyGTK: GTK+ for Python (officiel side) . Hentet 7. juni 2011. Arkiveret fra originalen 15. juni 2011.
- ↑ Dette fænomen er også nævnt i manualen til ctypes-modulet, som er designet til at interagere transparent med binær C-kode: ctypes - Et fremmed funktionsbibliotek for Python Arkiveret 15. oktober 2012 på Wayback Machine
- ↑ I dette eksempel: variablerne "vindue" og "knap" (der peger på Python-repræsentationen af GTK-objekterne) blev gemt, indtil programmet afsluttede
Litteratur
- Karvinen, K.; Karvinen, T. Mærke: Arduino-bots og gadgets: Seks indlejrede projekter med Open Source-hardware og -software. - O'Reilly Media, Incorporated, 2011. - 278 s. — ISBN 9781449389710 .
