Kodehjelp fargevelger
For det første så må vi importere riktig modul, og deretter oppretter vi et vindu. Denne koden skal ordne biffen:
import tkinter as tk main = tk.Tk() main.title("Blande farger") main.geometry("250x320") main.mainloop()
1 – Vi importerer tkinter, men velger å kalle den for tk for enkelhets skyld.
3 – Oppretter et vindu, og kaller det for «main»
4 – Setter en tittel på vinduet
5 – Setter en størrelse på vinduet
6 – mainloop() er viktig, slik at vinduet fortsetter å eksistere, og ikke avslutte med en gang 😉
OK, da har vi klart å lage et vindu. Nå er det på tide å legge inn noen objekter, og tkinter har mange objekter å velge mellom. Siden vi skal blande farger, så tenker jeg at vi legger inn det som kalles «Scale».
import tkinter as tk main = tk.Tk() main.title("Blande farger") main.geometry("250x320") r = tk.Scale(main, from_=0, to=100) tk.Label(main, text="RØD").grid(row=1,column=0) r.grid(row=0,column=0,padx=10,pady=10) main.mainloop()
7 – tkinter har et objekt som kalles «Scale». Her lager jeg et slikt objekt, som hører til main, som går fra 0 til 100. Merk! Denne linjen LAGER objektet, men plasserer det ikke i vinduet. Objektet kaller jeg «r».
8 – Jeg lager meg også et objekt som skal vise en liten tekst. Dette objektet kalles en «Label», og det plasserer jeg samtidig i vinduet med «.grid….»
10 – …og her plasserer jeg objektet som jeg kalte «r»
Nå er det mulig å kjøre programmet, og se objektene som vi har lagt inn 🙂
Deretter legger vi enn en Scale for grønn og blå også:
import tkinter as tk main = tk.Tk() main.title("Blande farger") main.geometry("250x320") r = tk.Scale(main, from_=0, to=100) g = tk.Scale(main, from_=0, to=100) b = tk.Scale(main, from_=0, to=100) tk.Label(main, text="RØD").grid(row=1,column=0) tk.Label(main, text="GRØNN").grid(row=1,column=1) tk.Label(main, text="BLÅ").grid(row=1,column=2) r.grid(row=0,column=0,padx=10,pady=10) g.grid(row=0,column=1,padx=10,pady=10) b.grid(row=0,column=2,padx=10,pady=10) main.mainloop()
Sånn! Da har vi lagt inn det meste vi trenger for å endre litt farger…bortsett fra et felt å bytte fargen på. Til dette kan vi benytte oss av et lerret. I tkinter kalles dette for en Canvas. Vi legger inn en Canvas på denne måten:
import tkinter as tk main = tk.Tk() main.title("Blande farger") main.geometry("250x320") r = tk.Scale(main, from_=0, to=100) g = tk.Scale(main, from_=0, to=100) b = tk.Scale(main, from_=0, to=100) can = tk.Canvas(main, height=180, width=240, bg="black") tk.Label(main, text="RØD").grid(row=1,column=0) tk.Label(main, text="GRØNN").grid(row=1,column=1) tk.Label(main, text="BLÅ").grid(row=1,column=2) r.grid(row=0,column=0,padx=10,pady=10) g.grid(row=0,column=1,padx=10,pady=10) b.grid(row=0,column=2,padx=10,pady=10) can.grid(row=2,column=0,columnspan=3) main.mainloop()
10 – Legger inn en Canvas som kalles «can»
18 – Plasserer «can» i vinduet
Det siste vi trenger å gjøre er å lage en funksjon som endrer fargen på lerretet når vi drar i spakene. Denne funksjonen må kalles opp HVER gang vi endrer verdien på r, b og g:
import tkinter as tk def show(a): R = int(r.get() * 2.55) G = int(g.get() * 2.55) B = int(b.get() * 2.55) can.configure(bg="#%02x%02x%02x" % ((R, G, B))) main = tk.Tk() main.title("Blande farger") main.geometry("250x320") r = tk.Scale(main, from_=0, to=100, command=show) g = tk.Scale(main, from_=0, to=100, command=show) b = tk.Scale(main, from_=0, to=100, command=show) can = tk.Canvas(main, height=180, width=240, bg="black") tk.Label(main, text="RØD").grid(row=1,column=0) tk.Label(main, text="GRØNN").grid(row=1,column=1) tk.Label(main, text="BLÅ").grid(row=1,column=2) r.grid(row=0,column=0,padx=10,pady=10) g.grid(row=0,column=1,padx=10,pady=10) b.grid(row=0,column=2,padx=10,pady=10) can.grid(row=2,column=0,columnspan=3) main.mainloop()
Sånn! Denne skal fungere!