Voit itse lisätä ja muuttaa sisältöä muokkaa-painikkeiden avulla
Ennen tallennusta suositellaan ottamaan kopio muokkausruudusta (ctrl-a -> ctrl-c)
Olet itse vastuussa tämän teoksen käytöstä aiheutuvista vahingoista Lue lisää.
Python graafinen käyttöliittymä
Yleistä[muokkaa]
Pääsivu: Python
Ohjelman saaminen toimimaan ikkunassa ei ole kovin vaikeaa. Tällä sivulla käydään läpi perusteita. GUI widgets (Graphical User Interface) eli graafisen käyttöliittymän elementtejä esimerkiksi ikkuna, valikko, kuvake. Attribuutti on esimerkiksi background="red". Ikkunointijärjestelmä esim. Windows 8, Linux Gnome ja Mac OS X. Kirjasto esimerkiksi Tk sovittaa käytettävään ikkunointijärjestelmään.
Tehdään ikkuna jossa otsikko, tekstiä, syöttöruutu ja painike
from tkinter import * ikkuna1 = Tk() # luodaan ikkunaolio ikkuna1.title("Ikkunan otsikko") muuttuja1 = Label(ikkuna1, text="Teksti1") # luodaan Label-olio muuttuja2 = Entry(ikkuna1, width=15) muuttuja3 = Button(ikkuna1, text="Painiketeksti") # Näytetään ikkunassa seuraavassa järjestyksessä muuttuja3.pack() # metodi tuo esille muuttuja2.pack() muuttuja1.pack() mainloop()
Sijoittelu ikkunassa (geometria)[muokkaa]
- Elementit voidaan sijoittaa ikkunaan eri tavoin ja niiden tulisi näkyä ennalta suunnitellusti vaikka käyttäjä mielivaltaisesti muuttaa ikkunan kokoa. pack() tai vastaava tuo elementin näkyviin. Elementtien järjestys toisiinsa nähden ja kohta ikkunassa määritetään näiden avulla.
- sijoittelu"komento" voidaan kirjoittaa omalle riveille tai rivin loppuun:
muuttuja3 = Button(ikkuna1, text="Painiketeksti").pack() muuttuja3 = Button(ikkuna1, text="Painiketeksti") muuttuja3.pack() pack() ryhmittelee vapaasti. Esim. muuttuja1.pack(side=LEFT) grid() ryhmittelee taulukkona place() ryhmittelee määrättyyn paikkaan
Toiminnallisuus[muokkaa]
Toiminnallisuus suoritetaan lisäämällä esimerkiksi Button kohtaan command=funktionimi ja tehdään normaalisti def komennolla toiminto.
from tkinter import * def ponnahdusikkuna(): muuttuja2.config(bg="white") # vaihdetaan ruutu valkoiseksi messagebox.showinfo("Otsikko", muuttuja2.get()) # avataan ponnahdusikkuna muuttuja5.delete(0, END) # tyhjennetään alin kenttä muuttuja5.insert(0, muuttuja2.get()) # lisätään kenttään kirjoitettu teksti def lopetusvahvistus(): if messagebox.askyesno("Otsikko","Lopetetaanko?"): # True-arvolla (Yes) ikkuna1 suljetaan ikkuna1.destroy() ikkuna1 = Tk() # luodaan ikkunaolio kehys1 = Frame(ikkuna1, relief=SUNKEN, bd=10) # upotetaan kehykseen muuttuja1 = Label(kehys1, text="Kirjoita jotain") muuttuja2 = Entry(kehys1, width=15, bg="red") muuttuja3 = Button(ikkuna1, text="Tulosta ponnahdusikkunaan", command = ponnahdusikkuna) muuttuja4 = Button(ikkuna1, text="Lopeta", command = lopetusvahvistus) muuttuja5 = Entry(ikkuna1, width=15) kehys1.pack() muuttuja1.pack() muuttuja2.pack() muuttuja3.pack(side=RIGHT) # sijoitetaan painike ikkunan oikeaan reunaan muuttuja5.pack() muuttuja4.pack() mainloop()
Räätälöity ponnahdusikkuna[muokkaa]
from tkinter import * def viestiIkkuna(): win = Toplevel() win.title('Ponnahdusikkunan otsikko') message = "Ponnahdusikkunan teksti" Label(win, text=message).pack() Button(win, text='Painikkeen teksti', command=win.destroy).pack() ikkuna = Tk() Button(ikkuna, text='Avaa ponnahdusikkuna', command=viestiIkkuna).pack() ikkuna.mainloop()
Ponnahdusikkuna[muokkaa]
# Esimerkki 1 from tkinter import * main = Tk() text = Text(main, width=40, height=10, wrap="char") text.pack() text.insert(INSERT, "".join(map(str, range(100)))) text.tag_add(SEL, "1.0", "end") text.focus_set() def jump(): text.after(500, btn.focus_set) text.after(1000, text.focus_set) btn = Button(main, text="Ok", command=jump) btn.pack() main.mainloop()