| Linux – Friheden til at programmere i Python: Version 1.0.20040516 – 2020-12-31 | ||
|---|---|---|
| forrige | Kapitel 1. Python for begyndere | næste |
Hvorfor i al verden skulle man interessere sig for Python, når der i forvejen er en lang stribe af rigtig gode gamle og velfungerende computersprog at gå til? Lad mig som eksempler nævne:
>>>from Tkinter import Label>>>widget = Label()
Egentlig burde der nok have været 1 programlinje mere i det viste eksempel. Den skulle i så fald hedde widget.pack() Funktionen pack() stiller objektets bestanddele på plads på udskriftsenheden (skærmen). Men i dette tilfælde er der ikke noget at stille på plads, så de 2 programlinjer er tilstrækkelige. Du kan lave nøjagtig samme vindue med:
med Entry:
>>>from Tkinter import Entry>>>barn = Entry()>>>barn.pack()
eller med Text (og en lang række andre objekter):
>>>from Tkinter import Text>>>barn = Text()>>>barn.pack()>>>from Tkinter import *>>>barn = Frame().pack(expand = YES, fill = BOTH)
Læg allerede her mærke til forskellen på 2 ting. 1: Det du formentlig havde forventet from Tkinter import Frame er blevet til from Tkinter import * (her sker det for at kunne udnytte parameterværdierne i pack) og 2: funktionen barn.pack() er blevet flyttet til Frame() og har fået 2 parametre (argumenter). Det sker for at give Frame arvingen barn mulighed for at kunne udvides (sker med expand = YES) og det i både vandret og lodret retning eller med andre ord til at kunne udfylde hele skærmen. Frame objektet er en kontainer, hvori alle andre grafiske objekter som tekstbokse, knapper, labels og mange andre kan indsættes. Dem er der jo ingen af i eksemplet her, så Frame().pack(expand = YES, fill = BOTH) virker helt på samme måde, som når du klikker på knappen længst til venstre i vinduets øverste højre hjørne. Den får vinduet til at klappe sammen til dets mindst mulige størrelse. expand = YES giver rammen (the frame - kontaineren) mulighed for at kunne udvides efter behov, men her der ikke behov (der skal ikke sættes andre komponenter ind i kontaineren). Hvis der senere sættes et eller flere af den nævnte og tilsvarende objekter ind i rammen (the Frame), vil den blive udvidet efter behov lige så længe der er plads til objekterne i det givne skærmareal. Er der ikke det, vil objekterne ganske enkelt ikke blive viste.
Figur 1-2. Eksempel på vinduer
{linuxbog:python:vinduer.png}
Naturligvis har de to vinduer nøjagtig de samme åbne/lukke muligheder m.v. som du kender dem fra f.eks. internet browsere i Windows. Det kan da kaldes objektorienteret programmering, så det forslår. Alle vinduer, knapper og andre normale objekter er forprogrammerede, så du direkte kan bruge dem og selvfølgelig tilpasse dem efter dit behov i det givne øjeblik. I C++ skal du skrive masser af programlinjer for at opnå det tilsvarende. Det er i øvrigt meget let at integrere Python og C++ i hinanden.
Noget af det fornemmeste ved OOP (objekt orienteret programmering) er genbrugen. Med de tre viste eksempler har du allerede set, at Python har fremragende egenskaber også på dette område, for naturligvis kan koden til et fuld færdigt vindue umuligt samles og udføres i de 2-3 programlinjer, det enkelte eksempel indeholder. Der skal mange gange så megen koden til. Hvis ikke Python besad evnen til genbrug, så skulle det meget store program, der skal til for at oprette det fuldt færdige vindue udvikles hver eneste gang, vinduet skulle bruges - altså 3 gange alene til de viste eksempler. Det ville blive kæmpeprogrammer, der i virkeligheden ville være næsten uanvendelige grundet det enorme omfang. Koden til det viste eksempel og til en række andre er indeholdt i Widget klassen. Label, Entry, Text og Frame er alle subklasser i Widget.