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] .
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 ()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).
af GUI-elementer | Værktøjssæt (sæt)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
lavt niveau |
| ||||||||||||||||||||||||||
højt niveau |
|
Python | |
---|---|
Fællesskab | |
Implementeringer | |
Andet |
|