close

PyGTK

Gå til navigation Gå til søg
PyGTK
Skærmbillede af PyGTK-programmet
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 ()
Image
Resultatet af programmets udførelse

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

  1. Summerfield, M. Python i praksis: Opret bedre programmer ved hjælp af samtidighed, biblioteker og mønstre. - Pearson Education, 2013. - S. 232. - ISBN 9780133373233 .
  2. PyGTK: GTK+ for Python (officiel side) . Hentet 7. juni 2011. Arkiveret fra originalen 15. juni 2011.
  3. 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
  4. 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 .

Links