Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation.

Slides:



Advertisements
Liknande presentationer
Händelsehantering i grafiska gränssnitt byggda med Tkinter
Advertisements

Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Avlusning Debugger (”avlusare”) Breakpoints Watch.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Programmering B PHP Lektion 4
Programstruktur: C för enchipsdatorer
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Programmeringsteknik
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL
Föreläsning 4 Python: mera om funktioner och parametrar
2D1311 Programmeringsteknik med PBL Föreläsning 6 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Föreläsning 9 Sökning, sortering, grafikprogrammering.
Programmeringsteknik K och Media
1 Föreläsning 3 Datalogi för E1 / 2D1343 Repetition List List operationer Stränghantering For-slingor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Programmering B PHP Lektion 2
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Programmering B PHP Lektion 1 Mahmud Al Hakim Folkuniversitetet
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Programmeringsteknik
Max start-guide Liten och väldigt snabbt ihopkastad.
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Modulär programutveckling
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
Namnrum, räckvidd och rekursion Linda Mannila
Funktioner Linda Mannila Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Problemlösningsmetodik
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 11 Grafisk användargränssnitt med Tkinter.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
2D1311 Programmeringsteknik med PBL
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 8 Mer om klasser och objektorientering.
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
Programmeringsteknik
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
Föreläsning 9 Sökning, sortering, grafiska gränssnitt (GUI)
Programmeringteknik Webbdelen 2. webbprogrammering Server Den dator som websidan ligger på Klient Dator som tittar på webbsidan med en webbläsare (t ex.
KPP053, HT2015 MATLAB, Föreläsning 4
Python.
Föreläsning 3 Programmeringsteknik
Föreläsning 2 Programmeringsteknik DD1310
Grafisk användargränssnitt med Tkinter
Presentationens avskrift:

Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation

Idag Mera om GUI med Tkinter: –Lambda-funktioner –Layout - grid –Attributet variable Felhantering, exempel

Hur var det man kopplade ihop en knapp med en funktion? from Tkinter import * def byttext(): knapp["text"] = "Aj!" roten = Tk() knapp = Button(roten, text = "Tryck inte", command = byttext) knapp.pack() roten.mainloop()

Parametrar då? Här skickar man bara med namnet på funktionen. Hur ska man göra om funktionen har parametrar? Lösning: Använd en lambda-funktion

Lambda-funktion… I Python kan man definiera en anonym funktion med följande syntax: lambda parametrar: uttryck Vanlig funktion: def dubbla(x): return 2*x Med lambda: dubbla = lambda(x) : 2*x

from tkinter import * def byttext(t): knapp["text"] = t roten = Tk() knapp = Button(roten, text = "Tryck inte", command = lambda: byttext("Aj!")) knapp.pack() roten.mainloop() …som parameter till Button

Layout Komponenter har metoder som styr hur de ska placeras i fönstret. Enklast är att använda pack: knapp.pack() Men bättre kontroll fås med grid: knapp.grid(row=4, column=3) Rita först en skiss över hur det ska se ut! Se programexemplet saga.pysaga.py

Rubrik Person: Sak: Verb: Adjektiv: Kroppsdel: Skriv saga

.py eller.pyw? Spara programmet med filändelsen ".pyw", t ex "saga.pyw" så kan du starta det med dubbelklick på ikonen.

Variabler Ett attribut som alla komponenter har är variable. Om man i förväg skapat ett variabelobjekt: s = StringVar() så kan man koppla ihop variabel och komponent med knapp["variable"] = s Metoden get hämtar data från en variabel.

Felhantering, t ex Felaktig inmatning: –Tecken istället för tal –För stort/för litet tal Filer: –Infil saknas –Felaktiga data i filen Lista/dictionary: –Index saknas –Nyckel saknas

Exception - repetition När något blir fel i ett Python-program uppstår ett särfall, t ex NameError: >>> print sko Traceback (most recent call last): File " ", line 1, in -toplevel- print sko NameError: name 'sko' is not defined Man kan ta hand om särfall genom att införa try-except-else -satser för de delar i programmet som kan krascha.

Särfall - exempel try: tal = int(input("Ge ett tal: ")) invers = 1.0/tal except (ZeroDivisionError): print("Noll kan inte inverteras") except (ValueError): print("Måste vara ett tal!") else: print("Inversen blev", invers)

def lasPengar(): """ Läser in tills man ger ett heltal""" pengar = None while not pengar: try: svar = input("Ange belopp: ") pengar = int(svar) except ValueError: print("Felaktigt belopp, försök igen") return pengar Exempel i slinga

Felhantering i tkinter I messagebox finns "popupfönster" som lämpar sig för felhantering: –showinfo –showwarning –showerror –askquestion –askyesnocancel Alla tar två parametrar: title och message Vissa har returvärde (askyesnocancel)

Exempel: showerror from tkinter import * rot = Tk() messagebox.showerror(title="Fel", \ message="Du har just gjort fel.") rot.mainloop()