PyGTK

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 24. maj 2017; checks kræver 2 redigeringer .
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

  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