programmering Flashcards
Tkinter radiobutton
v = StringVar()
radiobutton1 = Radiobutton(root, text=1, variable=v, value=”one”)
radiobutton2 = Radiobutton(root, text=2, variable=v, value=”two”)
Benytte:
butt = button(root, command=lambda: funksjon(v.get())
def funksjon(value_radio)
Når burde du bruke combobox, menu og optionlist
tkinter menu
tkinter combobox
Menu:
Burde brukes nå man vil gjøre veldige spesifikke ting for hver verdi.
Combobox:
For når bruker skal gjøre nært det samme for hver verdi.
Men i tillegg kan man skrive for p få en verdi. Så man kan ha en dropdown, sp kan man skrive på i tillegg til det som er i dropdown boksen. Litt som en entry med dropdown
Optionlist:
nesten det samme som combobox.
For når man vil at verdiene skal gjøre nært det samme.
Men man kan ikke skrive. Så det har ikke entry funksjonaliteten som combobox har.
Menu:
frame = Frame(root)
menu = Menu(frame)
menu. add-command(label=”hallo”, command=hallo)
manu. add_commanf(label=”hade”, command=root.destroy)
def hallo(): pass
root.config(menu=menu)
Combobox:
frame = Frame(root)
vlist = [“opt1”, “opt2”]
Combo = ttk.Combobox(frame, values=vlist)
Combo.set(vlist[0])
Combo.pack()
butt = Button(root, text=”Print values”, command=lambda:print_value(Combo.get())
butt.pack()
def print_value(value): print(value)
Option list:
option_list = [1, 2, 3]
value = IntVar(root)
value_inside = IntVar(root)
value_inside.set(“helllo”)
menu = OptionMenu(root, value_inside, *option_list)
menu.pack()
butt = Button(root, text=”submit”, command=lambda: print(value_inside.get())
butt.pack()
def print(value): print(value)
Listbox
frame = Frame(root)
vlist = [“Brod”, “brokoli”]
listbox = Listbox(root, selectmode=SINGLE) #selectmode kan også være multiple
for i in vlist:
listbox. insert(END, i) listbox. pack()
butt = Button(root, text=”print”, command=print_v)
butt.pack()
def print_v(): for i in listbox.curselection(): print(i)
Hvordan endre element i database?
Width open(“path”, “r” as fil:
Liste = json.load(fil)
Endre elementer med eks loop
With open(“path”, “w”) as fil:
Fil.write(json.dumps(liste))
Hvordan legge til i json?
With open("path", "r") as fil: Liste = json.load(fil) Liste.append(var)
With open("path", "w") as fil: Json.dump(liste, fil)
Hvordan slette fra database?
With open("path") as fil: Liste = json.load(fil)
Finn element med eks loop
With open("path", "w") as fil: Fil.write(json.dumps(iste))
Hvordan vise ting fra json?
With open("path", "r") as fil: Liste = json.load(fil)
*kwargs og *args
Disse brukes for å passere inn en uspesifisert mengde argumenter
kwargs er for dictionary
*args er bare for å passe inn
Nyttige random
random. randrange(start, stop, step)
random. randint(start, stop)
random. shuffle(list_)
Hvordan lage en liste?
list_ = list(range(start, stop, step)
Title og icon til GUI
root. iconbitmap(‘fil’)
root. title(“dette er en tittel”)
Hvordan legge til bokstaver i entry, med knaooer?
e. get()
e. delete(0, END)
e. insert(0, [variabel])
current = e.get()
e. delete(0, END)
e. insert(0, [eksisterende_var] + current)
Hvordan putte yt bilde
Hvordan resize bilde?
1.
Lage bilde
bilde = Image.open(‘fil’)
bilde = ImageTk.PhotoImage(bilde)
Putte bilde i det vi putter på skjermen
bilde_label = Label(image=bilde)
bilde_label.pack()
2.
Åpner bilde
p = Image.open(‘fil’)
Resizer
resize_p= p.resize((a, b) Image.ANTIALIAS)
Erklærer det resizede som en variabel
new_p = ImageTk.PhotoImage(resize_p)
Setter det i et label
my_lab = Label(window, image=new_p)
my_lab.pack()
OOP i tkinter
class klasse def \_\_init\_\_(self, root): .... self.btn=button(roottext="X"command=self.f) self.butt.pack()
def f(self): print("hey")
program = klasse(window)
window.mainloop()
bemerk:
Man kan erklære tk = Tk() ved å passere det navnet man vil ha inn i klasse, for så å bruke det som om det var root.
objekter som bruker kommandoer de ikke er i, refererer med self.[def]
Hvordan åpne nytt vindu
root = Tk()
def open_wind(): window = Tk()
butt = Button(root, command=open_win)
butt.pack()
root.mainloop
Hvordan ha tabs
from tkinter import ttk
notebook = ttk.Notebook(root) frame1 = Frame(notebook) frame2 = Frame(notebook)
notebook.pack(pady=15)
frame1. pack(fill=”both”, expand=1)
frame2. pack(fill=”both”, expand=1)
notebook. add(frame1, text=”frame1”)
notebook. add(frame2, text=”frame2”)
Hvis man skal ha noe på tabbene, bruker man så frame navnene istedenfor eks root
Hva gjør filter
Hvordan bruke filter med lambda
Den ser om noe i en liste er tilfelle, hvis så, filtres elementet.
Man kan for eksempel bruke dette til å legge til spesifikke ting fra en liste
list_ [“hokon”, “lars”, “hans”]
result = list(filter(lambda x: (x[0] == “h”), list_))
Dette lager en liste av ord fra listen list_, med navnene som starter på h
Regnestykke med lambda der man kan passe ting inn
cube = lambda y: yyy
print(cube(5))
Brukenlambda til å gange en liste
tables = [lambda x=x: x * 10 for x in range(1, 11)]
for table in tables:
print(table())
output: 10 30 30 ..opp til 100
Grunnen til at det står x=x, og at table() ikke har fylt inn oarameter, er fordi hvis ikke får man tilbake en instanse av en lambda funksjon, og ikke produktet sv det
Gange alle tall i en liste med lambda
numbs = list(map(lambda x: x*2, listen)
Man må bruke map, ellers får man bare instansen av lambda.
Hvordan gå til toppen av en while loop
Bruk “continue”.
Dette brukes på samme måte som feks:
“break”, “pass”
Hvorsan slice en liste
hvordan kopiere en liste
print(list(0:3))
min_mat = venns_mat[:]
inheretance
class [child](patent) def \_\_init\_\_(self, arg1parent, arg2parent) super.\_\_init\_\_(self, arg1p, arg2p) self.childarg = childarg
Legge sammen verdier i liste
Mineste verdi i liste
største verdi i liste
sum(liste)
min(liste)
max(liste)
Med comprehension,
hvordan gange alle verdier i en dict med to?
Dict = {key: value for (key, value) in dict.items()}
Dict = {key * 2: value for (key, value) in dict.items()} Dict = {key: value * 2 for (key, value) in dict.items()}
Summer dict verdier
sum(dict_.values())
Hvordan se om alle elementer i en liste passer en verdi?
list_ = (“x”, “x”, “x”)
if all(x == "x" for x in list_): print("all values have the value x")
lage liste der alle objekter er like
list_ = [“x”] * 10
Hva er OOP?
Objekt orientert programmering
Man lager klasser, ofte basert på ting fra den virkelige verden.
Fra disse klassene lager man så objekter.
MN har eks:
klasse: bil
metoder:
getfuel()
getspeed()
drive()
attributes:
fuel
speed
Hva er en kkasse?
imiterer ofte ting xra den virkelige verden.
Det er som en slags oppskrift pp koden.
Generelt er den bygget opp av:
variabler - dette inkluderer lister og andre klasser
metoder-som er som en funksjon
starter med class har en metodefor å initialisere klassen (\_\_init\_\_) self refererer tilet objekt i seg selv
Hva er et objekt?
En instans av en klasse
eks en klasse er en slag oopskrift.
Utifra den oppskriften, lages det klasser
eks:
Volvo = Car(“Svensk”, “88”, “rød”, 1998)
Hvordan brekke ut av en loop med å returne en funk
while Ture: funk.. funk.. if not funk som brekker: break funk.. funk..
funk som brekker: La oss si man skal brekke ut i fra en listeverdi for i in... if ..... break elif.... break else: return True return False
Hvordan repetere en ehile løkke hvis en except går av
while True: try: .... break except (ValueError, IndexError): print("Sorry, thats not a valid value")
Man dkal bruke lambda, til å passere to verider, der man skal returnere den største verdien. Hvorfan gjør man det?
value = lambda a,b: a if a>b else b
print(value(10, 5))
Lambda med dictionary
dict_ [{“country”: Norge”, “place”: Europa”}, {“Brasil”: “Amerika”}]
Lag en liste av alle stedene til landene
places = list(lambda x: x[“place”], dict_)
Bruke lambda til p legge sammen verdier fra to lister, så ha de verdiene i en liste
list_values = map(lambda x, y: x+y, list1, list2)
List comprehension
hvordan bruke map
hvordan bruke filter/conditional
hvordan bruke map og filter sammen
hvordan ha flere conditionals
map:
list = [expression for item in iterable]
eks: [i*2 for i in range(1, 11)]
filter/conditional
list = [expression for item initerable if conditional]
eks: [i for i in range(1, 101) if i % 2 == 0]
Bruke map og filter sammen
[i*2 for i in range(1, 11) if i % 2 == 0]
Hvis i er et partall ganges det med 2
flere conditionals
list = [expression (if/else) for item in iterable]
conditionals flyttes til etter expression
eks: [‘A’ if i % 2 == 0 else ‘B’ for i in range(1, 101)]
Hvis i er oddetall, vises A
Ellers vises B
lag en funksjon som tar tre tall, og returnerer gjennomsnittet av de tre tallene
gjør det samme med lambda
def gjennomsnitt(tall1, tall2, tall3): return sum([tall, tall2, tall3]) / 3
ikke bruk list()
dette fucker opp funken, og som døregel andre ting også
noter også at inn i sum oppgis tallene som en liste
Man kan alternativt bruke lambda:
gjennomsnitt = lambda a, b, c: sum([a, b, c]) / 3
Hvis du har en liste, og skal bli ferdig med funk bare når listen har et visst antall elementer, hvordan gjøres det?
Den beste måten er å bruke while-løkke
list = []
while len(list) != x: ...
Med list comprehension, hvordan legge sammen ting fra ulike lister
list1 = [] list2 = []
list3 = [i+a for i in list1 for a in list2]
item1+item2 for item1 in iterable1 for item2 in iterable2
liste av lister med list comp
[[“x”, “x”, “x”] for i in range(1, 10)]
Hvordan få noe i entry
hvordan slette nor i entry
hvordan legge til noe i entry
.get()
.delete()
.insert()
Hvis man bruker (0, 4) eks får man alt fra og med de fem første karakterene
Kan kan her også bruke tk.END (0, tk.END)
Hvordan få ting fra textbox i tkinter
hvis man bruker dette, kan man ikke bruke get() som normalt. man må passere et argument
man må si;
linjen det er snakk om
posisjonen til karakterwn på linjen
textbox.get(“1.0”) gir den først karakteren på linje 1
(“1.0”, “1.5”)
(“1,0”, tk.END) gir alt fra alle linjene
tkinter naming conventions label text frame button entry
lbl txt frm btn ent
dict comp syntax med eks
dict comp med conditional
dict comp med flere conditionals
dict comp med funksjon
dict comp
dictionary = {key: expression for (key, value) in iterable}
eks:
funksjon for å regne om farenheit til celcius: (value-32)*(5/9)
cities_farenheit = {‘New York’: 32, ‘Boston’: 75}
cities_celcius = {key: ((value-32)*(5/9)) for (key, value) in cities_farenheit.items()}
dict comp med conditional:
dictionary = {key: expression for (key, valie) in iterable if conditional}
cities_celcius = {key: item for (key, value) in cities_farenheit.items() if item > 60}
if/else
dictionary = {key: (if/else) for (key, valie) in iterable if conditional}
cities_celcius = {key: “Warm” if item > 60 else “Cold” for (key, value) in cities_farenheit.items()}
dette blir:
{‘New York’: ‘Cold’, ‘Boston’: ‘Warm’}
Hvis man vil bruke veldig mange conditionals, er det lurt å bruke en funksjon i stedet, som har mange conditionals
cities_celcius = {key: check_temp(value) for (key, value) in cities_farenheit.items()}
Python operatirer gange dele minus pluss modulo dele med nedruning
* / - \+ % //
Hvordan printe de to siste elementene av en liste?
print(list[-3:-1])
Legg merke til at det ene tallet hopper over en verdi.
Noe som betyr at det er fra x til y, uten y
For de to første verdiene
print(list[0:2])
Hvordan endre en verdi i en liste, hvis verdien igså er i en annen liste?
for i in list1
for a in enumerate(list2)
if i == a
list1[index] = “hey”
legg merke til st man bruker index
hvis man ikke bruker dette, funker det ikke
hva er en liste?
En data-type som lagrer en kolleksjon av data
Hva er en dictionary
En dictionary er en liste med key-valje pairs. disse key-value parisene er to verdier som er assosiert.
dict[key]
Hva er en funksjon
En blokk med kode som blir kjørt når funksjonen kalles pp.
funksjonen kan ta knn parsmetere, og returnere verdier
Hvis verdi i list1 er igså i list2, hvordan endre elementene i lis2 som også er i list1
eks:
list1 = [x, y, z]
list2 = [x, i, y]
Hvis en verdi fra list1, også er i list2, skal verdien i list1 endre, til la oss si til B
list1 = [B if i in list2 else i for i in list1]
brukbare innebyggde funksjoner for liste
count(obj)
insert(index, obj)
pop(index) tar ut og kan brukes
list.reverse() reverserer liste
sort([func]) - eks sort(key=int) sorterer numerisk
sorted() kopierer en sortert versjon av liste
Hva er **kwargs
hvordan fungerer det?
Fungerer som args, med med dictionary
def print_name(**kwargs): print(kwargs['first_name'] + kwargs['last_name])
pinrt_name(first_name=’Hans’, last_name=’Hansen’)
man kan også loope igjennom dicten
for key, value in kwargs.items()