# Python scripts behorend bij workshop1 tkinter # 010_venster.py #import van alle onderdelen van de tkinter module from tkinter import* venster = Tk() # het basis venster wordt aangemaakt venster.mainloop # het script wordt in een loop steeds weer uitgevoerd # dit zorgt ervoor dat het venster zichtbaar blijft #het venster verschijnt in de linker bovenhoek van het scherm ------------------------------------------------------------------------------------------------------------------------------------ # 011_venster.py #Basis venster met tkinter from tkinter import * venster = Tk() # Het basis venster wordt voorzien van een titel venster.title("tkinter basis venster") # We geven het venster afmetingen van 450 bij 300 pixels venster.geometry("450x300") # De mainloop zorgt ervoor dat het venster zichtbaar blijft venster.mainloop() -------------------------------------------------------------------------------------------------------------------------- #012_venster.py from tkinter import * venster = Tk() venster.title("Venster met achtergrondkleur") # we kunnen de kleur van de achtergrond aanpassen venster.configure( background = "yellow") # Bij de geometry instelling kunnen we naast de afmetingen # ook een offset instellen t.o.v. de linker bovenhoek van het scherm venster.geometry("450x300+400+400") venster.mainloop() --------------------------------------------------------------------------------------------------------------------------- #013_wstkinter #Basis venster met label from tkinter import * venster = Tk() venster.title("Venster met label") venster.geometry("450x300+400+400") # Een label is een widget die een tekst kan weergeven # bijvoorbeeld de functie van een druktoets # bij alle widgets moet je aangeven waar deze geplaatst moeten worden label1 = Label(venster,text="Dit is label 1") # om een widget zichtbaar te maken in een venster # moet je deze in het venster "packen" label1.pack() venster.mainloop() --------------------------------------------------------------------------------------------------------------------------- #014_ws_tkinter.py #Basis venster met labels en label argumenten from tkinter import * venster = Tk() venster.title("tkinter basis venster") venster.geometry("450x300+400+400") # de label widget kan voorzien worden van achter en voorgrond kleur # achtergrondkleur met bg=, voorgrondkleur met fg= gevolgd door # de naam van de kleur tussen aanhalingstekens label1 = Label(venster,text="Dit is label 1", bg = "dark grey", fg = "white") label2 = Label(venster, text = "Dit is label 2", bg = "yellow", fg = "red") # label1 wordt in het midden links geplaatst met het argument side = "left" label1.pack(side = "left") # label2 wordt midden boven geplaats, dat is de default plaats # als de .pack functie geen argumenten meekrijgt label2.pack() venster.mainloop() ------------------------------------------------------------------------------------------------------------------------ #015_wstkinter.py # tkinter testvenster5 met verschillende .pack() varianten from tkinter import* venster5=Tk() venster5.title("Test venster met .pack() varianten") venster5.geometry("400x150+400+400") label1=Label(venster5,text= "Dit is label 1",bg="light grey",fg="black") label1.pack(side="left") # label1 is in het midden van de linkerkant van het venster geplaatst label2=Label(venster5,text= "En dit is label 2",bg="blue", fg= "white") # bij label2 heeft de .pack() functie het argument right meegekregen label2.pack(side="right") venster5.mainloop() -------------------------------------------------------------------------------------------------------------------------- #015_wstkinter.py # tkinter testvenster5 met verschillende .pack() varianten from tkinter import* venster5=Tk() venster5.title("Test venster met .pack() varianten") venster5.geometry("400x150+400+400") label1=Label(venster5,text= "Dit is label 1",bg="light grey",fg="black") label1.pack(side="left") # label1 is in het midden van de linkerkant van het venster geplaatst label2=Label(venster5,text= "En dit is label 2",bg="blue", fg= "white") # bij label2 heeft de .pack() functie het argument right meegekregen label2.pack(side="right") venster5.mainloop() --------------------------------------------------------------------------------------------------------------------------- #017_ws_tkinter #Basis venster met tkinter .place functie # Voor het plaatsen van widgets is er ook de .place() functie from tkinter import * venster = Tk() venster.title("Venster met labels geplaatst met .place().") venster.geometry("450x300+400+400") label1 = Label(venster,text="Dit is label 1", bg = "dark grey", fg = "white") label2 = Label(venster, text = "Dit is label 2", bg = "yellow", fg = "red") # met de .place functie kunnen we voor de widget coordinaten opgeven # de coordinaten x en y gelden t.o.v. de linker bovenhoek van het venster # en zijn default in pixels. Andere maat eenheden zijn mogelijk # zie de tkinter reference label1.place( x = 50, y = 50) label2.place ( x = 50, y = 100) venster.mainloop() ---------------------------------------------------------------------------------------------------------------------------- #018_wstkinter.py # De afmetingen van de widgets kunnen we ook instellen # Als we labels of toetsen hebben met teksten van verschillende # lengte, zullen de afmetingen van de widgets ook verschillend zijn. from tkinter import * venster = Tk() venster.title("Venster met de lengte van labels aangepast") venster.geometry("500x250+400+400") label1 = Label(venster,text="Dit is label 1", bg = "dark grey", fg = "white", width = 15) label2 = Label(venster, text = "Dit is label 2", bg = "yellow", fg = "red",width = 15) # de afmetingen van een widget kunnen we instellen met width en height # width = 15 staat voor een breedte van 15 karakters label1.place( x = 50, y = 50) label2.place ( x = 50, y = 80) venster.mainloop() ---------------------------------------------------------------------------------------------------------------------------- #019_wstkinter.py # Venster indelen met de .grid() functie # De .grid() geometry management functie werkt met rijen en kolommen # in plaats van de pack functie wordt de grid functie gebruikt # De .grid() functie werkt met rijen en kolommen from tkinter import* venster=Tk() venster.title("Venster met plaatsing van widgets met de .grid() functie") venster.geometry("550x200+400+400") label1=Label(venster,text= "Dit is label 1",bg="yellow",fg="black") label1.grid(row=0, column=0) # label1 is in de bovenste rij(0) en in de eerste kolom (0)geplaatst # een label wordt altijd in het midden van kolom gezet # de breedte van de kolom hangt af van de breedte van de tekst van het label label2=Label(venster,text= "En dit is label 2",bg="blue", fg= "white") label2.grid(row=1, column = 1) # label3 is een leeg label en wordt geplaatst om een lege rij te maken. label3=Label(venster, text= " ") label3.grid ( row= 2, column = 0) # label4 nog een lege rij label4=Label(venster, text= " ") label4.grid (row = 3, column = 0) label5=Label(venster,text= " En dit is het derde label", bg="black", fg= "white") label5.grid(row=4, column=0) venster.mainloop() ------------------------------------------------------------------------------------------------------------------------------- #021_wstkinter.py # De button widget # Met de button widget kunnen we druktoetsen in het venster plaatsen from tkinter import* venster = Tk() venster.title("Test Venster met buttons") venster.geometry("400x200+400+400") b1 = Button(venster,text = "Aan") b1.pack(side= "left") # button1 (b1) wordt links geplaatst met de .pack functie side = "left" b2 = Button(venster,text = "Uit") b2.pack(side = "left") # button2 (b2) wordt zo vermogelijk links geplaatst dat is in dit geval # tegen de rechterzijde van button1 venster.mainloop() ------------------------------------------------------------------------------------------------------------------------------- #022_wstkinter.py # Venster met gesepareerde buttons en relief from tkinter import* venster = Tk() venster.title("Test Venster met buttons") venster.geometry("400x200+400+400") lbl=Label(venster, text="Het label komt bovenaan") lbl.pack() b1 = Button(venster,text = "Aan", relief = RAISED, borderwidth = 3) # er zijn verschillende opties voor relief, FLAT is default,RAISED, SUNKEN, # GROOVE en RIDGE. borderwidth bepaalt de mate van relief b1.pack(side= "left", padx = 20) # met padx en pady maak je ruimte om een widget # het getal achter padx is de ruimte in pixels # in de reference wordt uitgebreid de mogelijkheden beschreven b2 = Button(venster,text = "Uit", relief = RAISED, borderwidth = 3) b2.pack(side = "left",padx = 20) venster.mainloop() ------------------------------------------------------------------------------------------------------------------------------- #023_wstkinter from tkinter import* venster5 = Tk() venster5.title("Test Venster met buttons") venster5.geometry("400x200+400+400") lbl=Label(venster5, text="Het label komt bovenaan") lbl.pack() b1 = Button(venster5,text = "Aan", relief = RAISED, borderwidth = 3) b1.pack(side= "left", padx = 20) b2 = Button(venster5,text = "Uit", relief = RAISED, borderwidth = 3) b2.pack(side = "left",padx = 20) venster5.mainloop() ------------------------------------------------------------------------------------------------------------------------------- #024_wstkinter # Een led in en uit schakelen # We gaan een commando koppelen aan toetsen in het venster. # Benodigdheden een LED en een serieweerstand van 330 ohm. # Sluit de plus van de LED via een 330 ohm weerstand aan op # pin 12 van de GPIO en kathode van de LED op GND pin 6 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup (12, GPIO.OUT) # Definieer de functie led_aan om deze aan de Aan toets te koppelen def led_aan(): GPIO.output(12,1) # Definieer de functie led_uit om deze aan de Uit toets te koppelen def led_uit(): GPIO.output(12,0) from tkinter import * venster = Tk() venster.title("Bedieningsvenster LED Aan / Uit") venster.geometry("400x150+400+400") label1 = Label(text = "LED Inschakelen").place( x = 30, y = 35) label2 = Label(text = "LED Uitschakelen ").place( x = 30, y = 85) button_aan = Button(text = "Aan", bg ="light grey",fg = "green",command = led_aan).place( x = 160, y = 30) # In de button_aan declaratie hebben we een command argument opgenomen dat verwijst naar de # functie led_aan, deze functie wordt uitgevoerd als we op de Aan toets klikken. button_uit = Button(text = "Uit", bg ="light grey",fg = "red",command = led_uit).place( x = 160, y = 80) # Bovenstaand commentaar geld ook voor button_uit venster.mainloop() ------------------------------------------------------------------------------------------------------------------------------ #026_wstkinter # Een led in- en uitschakelen # Het venster verfraaien en de afmetingen van de widgets gelijk maken import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup (12, GPIO.OUT) def led_aan(): GPIO.output(12,1) def led_uit(): GPIO.output(12,0) from tkinter import * venster = Tk() venster.title("Toetsen venster") venster.geometry("300x150+400+350") label1 = Label(text = "LED Inschakelen ", relief = SUNKEN, borderwidth = 3).place( x = 30, y = 35) # Door een spatie in te voegen is de tekst LED inschakelen even lang als LED Uitschakelen label2 = Label(text = "LED Uitschakelen ", relief = SUNKEN, borderwidth = 3).place( x = 30, y = 85) # De labels hebben een iets verdiept relief gekregen met het argument relis = SUNKEN button_aan = Button(text = "Aan", bg ="light grey",fg = "green",width = 8,relief = RAISED,borderwidth = 3, command = led_aan).place( x = 160, y = 30) button_uit = Button(text = "Uit", bg ="light grey",fg = "red",width = 8,relief = RAISED,borderwidth = 3, command = led_uit).place( x = 160, y = 80) # De toetsen zijn in breedte gestandaardiseerd met het width argument venster.mainloop() ---------------------------------------------------------------------------------------------------------------------------- #027_wstkinter # Besturing rood - groen led import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setwarnings (False) GPIO.setup(12, GPIO.OUT) GPIO.setup(16, GPIO.OUT) # pin 12 en 16 ingesteld als output def rood_a(): GPIO.output(16, 1) # functie om de rode LED in te schakelen def rood_u(): GPIO.output(16, 0) # functie om de rode LED uit te schakelen def groen_a(): GPIO.output(12, 1) # functie om de groene LED in te schakelen def groen_u(): GPIO.output(12, 0) # functie om de groene LED uit te schakelen from tkinter import * venster = Tk() venster.title ("LED besturing Rood/Groen") venster.geometry("350x200+300+300") button_rood_a = Button( text = "Rood Aan",bg ="light grey",fg = "Red", width = 8, relief= RAISED, borderwidth = 4, command = rood_a) button_rood_a.place(x = 50 ,y = 40) button_rood_u = Button( text = "Rood Uit",bg ="light grey", fg ="Red", width = 8, relief = RAISED, borderwidth = 4, command = rood_u) button_rood_u.place( x = 50, y = 120) button_groen_a = Button( text = "Groen Aan", bg ="light grey", fg = "Green", width = 8, relief = RAISED, borderwidth = 4, command = groen_a) button_groen_a.place( x = 200, y = 40) button_groen_u = Button( text = "Groen Uit", bg ="light grey", fg = "Green", width = 8, relief = RAISED, borderwidth = 4, command = groen_u) button_groen_u.place( x = 200, y = 120) venster.mainloop() --------------------------------------------------------------------------------------------------------------------------------