Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 15

Relevanta dokument
Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Mer till P-uppgiften: Dokumentation. Nyheter. Algoritm för sökning. Mer hjälp. DD1311 Programmeringsteknik med PBL

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

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

Starta ett fönster... Hur håller tkinter reda på musklick? Olika sätt att organisera fönsterinnehåll. Och för att placera våra widgets

Funktioner. Linda Mannila

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

v. 42 Python HT17 En introduktion Oscar Bergqvist

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

DD1314 Programmeringsteknik

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

v. 43 Python HT17 En introduktion Oscar Bergqvist

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

Grundläggande datalogi - Övning 1

PROGRAMMERINGSTEKNIK FÖRELÄSNING 5

Mer grafik. Jan Erik Moström

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Språket Python - Del 2 Grundkurs i programmering med Python

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Datalogi för E Övning 3

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Besiktningsprotokollet

Föreläsning 5 Programmeringsteknik DD1310. Modulen doctest. Exempel. Doctest Dictionary Filhantering

Föreläsning 10. Besiktningsprotokollet

TDP002 - Imperativ programmering

Ordlistor, filhantering och ut på webben. Linda Mannila

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Föreläsning 6 Programmeringsteknik och Matlab DD1312

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

TDP002 - Imperativ programmering

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Tentamen i Introduktion till programmering

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

729G04 Programmering och diskret matematik. Föreläsning 7

729G75 Programmering och algoritmiskt tänkande. Grafiska gränssnitt och händelsedriven programmering

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

729G06 Programmering och logik. Grafiska gränssnitt och eventdriven programmering del 2

729G06 Programmering och logik. Grafiska gränssnitt och eventdriven programmering

Objektorienterad Programmering (TDDC77)

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Grafiska användargränssnitt i Java

Föreläsning 13 Datalogi 1 DA2001

Övning 6. Ali Tofigh 24 Oktober, 2006

Klasser och objekt, referenser Grundkurs i programmering med Python

Laboration: Whitebox- och blackboxtesting

DD1311 Programmeringsteknik för CL1 Laborationer läsåret

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Selektion och iteration

Föreläsning 2 Programmeringsteknik och C DD1316

Programutveckling för Tekniska Tillämpningar Arbetsblad 5

Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Övningar Dag 2 En första klass

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Grafiska användargränssnitt i Java

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

Övning 6. Komprimering, kryptering, dokumentering & testning

729G75 Programmering och algoritmiskt tänkande. Grafiska gränssnitt och händelsedriven programmering

Detaljbeskrivning av Player

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

TDDD78, TDDE30, 729A Grafik: Att "rita" egna komponenter

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Installera Anaconda Python

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Hos vad? och bör därför vara instanseller klassvariabel i vilken klass?

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

729G04 Programmering och diskret matematik. Python 3: Loopar

Uppgifter teknik HT17 (uppdaterad v. 40)

Föreläsnings 9 - Exceptions, I/O

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Objektorienterad programmering Föreläsning 2

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Sekvensdatatyper, ASCII och chiffer. Linda Mannila

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Sätt att skriva ut binärträd

Tentamen OOP

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Datorövning 1. int sgd(int m, int n) { int rest; while ( n!= 0 ) { rest = m % n; m = n; n = rest; return m;

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Övningar i 2D2050. Per-Anders Staav (kallas Pa) Epost: eller

Att skriva till och läsa från terminalfönstret

Transkript:

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 15

Grafiska gränssnitt - GUI Tkinter Tillstånd Komponenter Layout Händelser

LÄNKAR & EXEMPEL...finns på kurswebsidan under "GUI med tkinter"

TKINTER Tkinter är ett av flera sätt att skriva grafiska gränssnitt i Python Vi använder Tkinter därför att: Tkinter följer med Pythoninstallationen, och introduceras i kursboken, se kap 13

TEXTBASERAT PROGRAM start inläsning utskrift beräkning avslutning

TILLSTÅND Med ett grafiskt gränssnitt måste man tänka på vad som visas på skärmen i ett visst läge. Man brukar använda sig av tillstånd (state) när man modellerar hur programmet ska fungera. Programmets tillstånd beror av variablers värden, t ex användare = "elev"

TILLSTÅND - GRAF vy elev vy lärare inloggning fel vy rektor

KOMPONENTER Modulen tkinter, har klasser för grafiska komponenter. Button Canvas Checkbutton Entry Frame Label Listbox Menu Menubutton Message Radiobutton Scale Scrollbar Text

from tkinter import * roten = Tk() knapp = Button(roten, text="tryck") knapp.pack() roten.mainloop()

VAD GÖR VAD? Hämtar alla klasser i modulen Tkinter. from tkinter import * roten = Tk() knapp = Button(roten, text="tryck") knapp.pack() roten.mainloop() Tk-konstruktorn - skapar rotfönstret. Knappen placeras ut. Button-konstruktorn - skapar en knapp. Startar en slinga som väntar på inmatning från användaren.

KOMPONENTER Knappar och annat kallas komponenter och är objekt. Varje komponent har en konstruktor med många defaultparametrar. Anropa bara med det som behövs: knapp = Button(roten,text="Handla") Första parameter ska vara roten

ÄNDRA ATTRIBUT knapp["text"] = "Klart"

CONFIG Med metoden config kan man ändra flera attribut knapp.config(bg = "lightblue",\ height = 3,\ width = 9,\ font = ('times', 20, 'italic')) Här ändrar vi knappens färg, storlek, och font.

COMMAND Ett attribut som alla komponenter har är command Där anger man vilken metod/funktion som ska anropas när komponenten används. Om vi skriver en funktion addera() som ska anropas när nån trycker på knapp så kan vi koppla ihop funktion med knapp så här: knapp["command"] = addera

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 funktion med följande syntax: lambda parametrar: uttryck Vanlig funktion: def dubbla(x): return 2*x Med lambda istället: dubbla = lambda(x) : 2*x

lambda i command 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()

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.py

0 1 2 3 0 1 2 3 4 5 6 Rubrik Person: Sak: Verb: Adjektiv: Kroppsdel: Skriv saga

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: Filer: Tecken istället för tal För stort/för litet tal 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 "<pyshell#17>", line 1, in -toplevelprint 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 = input("vad ska inverteras? ") invers = 1.0/tal except (ZeroDivisionError): print "Noll kan inte inverteras" except (NameError): print "Du borde ha skrivit ett tal!" else: print "Inversen blev", invers

EXEMPEL I SLINGA def laspengar(): """ Läser in tills man ger ett heltal""" pengar = None while not pengar: try: svar = raw_input( Ange belopp: ") pengar = int(svar) except(valueerror), e: print "Felaktigt belopp, försök igen" return pengar

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()