Göm meny

Introuppgift 2

Syftet med denna introuppgift är att ni ska bekanta er med ramverket TkInter, hur gränssnitt skapas på ett objektorienterat sätt och hur man hanterar användarinteraktion på ett händelsebaserat sätt.

Redovisningstider

Redovisningstider hittar du i TimeEdit. Se till att du anmält dig till en grupp för Tema 2.

Komplettering

Vid frånvaro skickar du in en screencast på max 10 minuter där du går igenom din/er kod och tar upp redovisningsfrågorna längst ner.

Inlämningen skickar du in enligt instruktioner på sidan Inlämningsinstruktioner.

Uppgifter

För dessa övningsuppgifter ska ni använda en fil per uppgift. Den första uppgiften löser ni t.ex. i filen uppg1.py. All kod ska följa kodstandarderna PEP 8, samt PEP 257 och kontrolleras med programmen pep8 och pep257.

Vid redovisning kommer ni att få demonstrera ett urval av uppgifterna. Ni kommer också att få frågor om era lösningar.

Tips: Ta hjälp av exempelkoden från föreläsningen.

Kunskapsmål för introuppgift till Tema 2

Efter att ha gjort denna uppgift ska du

  • förstå hur ett grafiskt gränssnitt skapas med hjälp av Tkinter
  • förstå vad som menas med ett händelsebaserat programflöde
  • ha grundläggande färdighet att skapa ett gränssnitt med ett händelsebaserat programflöde med hjälp av Tkinter
  • förstå syftet med geometri hanterare i Tkinter
  • kunna använda av geometri-hanterare i Tkinter för att skapa enklare layouter

Referensdokument

Ni kommer behöva slå upp saker i referensdokumentation. Nedan hittar ni länkar till två alternativ.

Uppgift 1 - Ett fönster och en knapp

I den första uppgiften ska ni skapa ett fönster som innehåller en knapp. När man trycker på den knappen ska texten "Knappen funkar!" skrivas ut i terminalen.

Uppgift 2 - Layout

I denna uppgift ska ni

  • skapa ett fönster och placera ut TkInter-widgets enligt nedanstående layoutskiss så gott ni kan, dvs den behöver inte vara exakt likadan.
  • Ta fram två olika lösningar som använder två olika geometri-hanterare. Ni behöver inte lägga till någon interaktivitet.
  • Lägg märke till och fundera på vilken typ av layout som lämpar sig för en geometri-hanterare jämfört med en annan. Skriv ner detta som en kommentar i er kod som ni kan referera till vid redovisning.

Tips! Kom ihåg att ni kan gruppera widgets genom att lägga dem i en frame och sedan lägga till det Frame-objektet till huvudfönstret.

layoutskiss

Geometri-hanterare (Geometry managers)

Det finns tre geometri-hanterare att välja mellan i TkInter. Syftet med geometri-hanterare (kallas ibland för layout-hanterare/layout managers i andra språk) är att hjälpa till och till viss mån automatisera hur och var GUI-komponenter placeras. Läs om dessa i mer detalj här:

Principen som används när man skapar ett GUI med TkInter är att man först skapar en widget och då kopplar ihop den med den komponent som är dess behållare. Sedan anropar den geometri-hanterar metod i widgeten som man vill använda och skickar då med de parametrar som ska tas hänsyn till när widgeten placeras ut.

Uppgift 3 - Option-meny

I denna uppgift ska ni skapa ett fönster med en label, en option-meny och en knapp. Option-menyn ska innehålla namnen på minst fem maträtter och när man trycker på knappen ska texten på labeln ändras till samma text som man valt i option-menyn.

Se optionmenu.py för exempelkod.

Uppgift 4 - Checkboxar, radioknappar och text

I denna uppgift ska ni skapa ett fönster som har samma layout som bilden nedan. När man trycker på knappen ska ett nytt fönster skapas som innehåller ett text-fönster. Text-fönstret ska innehålla alla valda alternativ från huvudfönstret, dvs texten från text-fältet, alla markerade checkboxar, den valda radioknappen (endast en radio-knapp ska kunna vara vald åt gången).

Checkboxar och radioknappar

Resultatfönster

Se checkbox.py, radio.py och text.py för exempelkod.

Redovisning

Redovisningsförfarande

  • Vid redovisningen kommer handledaren be er demonstrera vissa av de uppgifter ni gjort, samt kontrollera att koden uppfyller kraven för kodstandard (PEP 8 och PEP257).
  • Varje gruppmedlem ska kunna svara på frågorna nedan.
  • Efter redovisningen kommer handledaren bedömma hur väl varje enskild gruppmedlem uppnått kunskapsmålen kopplade till denna uppgift (se ovan).
  • Varje pargrupp har en begränsad tid (ca 10 minuter) att redovisa och diskutera med handledaren.

Komplettering

  • Vid behov kommer er redovisningshandledare anvisa om att ni ska lämna in komplettering enligt kompletteringsinstruktionerna ovan. Inga kompletteringar kommer kunna göras under själva redovisningstiden.

Redovisningsfrågor

  1. Ge exempel på hur man skapar objekt från widget-klasser från Tkinter och gör så att de syns i det grafiska gränssnittet.
  2. Vad är en geometri-hanterare, dvs vad är syftet med att använda en geometri-hanterare?
  3. Vad är de huvudsakliga skillnaderna mellan de tre olika geometri-hanterarna Pack, Grid, och Place och hur använder man dem? Ge exempel från er kod och förklara koden.
  4. Ett sätt att koppla ihop vad som ska göras av programmet med olika en GUI-komponent är att göra det när de instansieras. Visa ett exempel på detta i din kod och förklara koden.
  5. Man kan också koppla ihop händelser (events) med instruktioner för vad som ska göras när händelsen inträffar. Visa exempel på detta i din kod och förklara koden.
  6. Vissa GUI-komponenter använder sig av speciella Tkinter-variabler som lagrar t.ex. värden från en Tkinter-komponent. Visa exempel på detta i din kod och förklara koden.

Sidansvarig: Jody Foo
Senast uppdaterad: 2018-03-15