Primeri GUI programov v tem poglavju uporabljajo modul simplegui
, ki je na voljo samo v tem interaktivnem učbeniku. Za izdelavo GUI interaktivnih programov v jeziku Python sicer uporabljamo modul tkinter
, ki je precej razširjen in bistveno bolj kompleksen. Osnove GUI programiranja bomo spoznali s pomočjo interaktivnih GUI programov, ustvarjenih z modulom simplegui
. Za primerjavo pa bo vsem programom dodana tudi koda, ki bo uporabljala modul tkinter
.
Prvi preprost primer GUI programa bomo uporabili za to, da prikažemo osnovna 4 opravila oziroma naloge GUI programiranja. Določili bomo izgled GUI programa, ki bo vseboval okno z vsebino – napisom ter gumb, na katerega bo uporabnik lahko kliknil. Druga naloga bo povezovanje klika na gumb in spreminjanja vsebine napisa:
okvir = simplegui.create_frame("Okno", 300, 200) okvir.set_canvas_background("black") okvir.add_button("Klikni", klik) okvir.set_draw_handler(narisi)
Naslednja naloga bo izdelava funkcije, ki bo ob kliku na gumb dejansko spremenila vsebino napisa:
def klik(): global sporocilo sporocilo = "Bravo!" def narisi(platno): platno.draw_text(sporocilo, [50, 100], 36, "red")
Zadnja naloga pa bo vzpostavitev dogodkovne zanke, ki bo čakala na to, da uporabnik klikne na gumb ter nato sprožila ustrezni dogodkovni rokovalnik.
1 # encoding: utf-8 2 import tkinter as tk 3 4 besedilo = "Lep pozdrav!" 5 6 # Rokovalnik za klik miške na gumb 7 def klik(): 8 global besedilo 9 besedilo = "Bravo!" 10 # Izbriši vsebino platna 11 platno.delete("all") 12 # Na novo napiši besedilo 13 platno.create_text(150, 100, fill="red", text=besedilo, \ 14 font=("Times", 27)) 15 16 # Ustvari okno, okvir in platno 17 okno = tk.Tk() 18 okno.title("Okno") 19 okno.geometry("500x250") 20 21 okvir = tk.Frame(okno) 22 okvir.grid(row=0, column=0, pady=20) 23 24 platno = tk.Canvas(okno, width=300, height=200, bg="black") 25 platno.grid(row=0, column=1, pady=20) 26 27 platno.create_text(150, 100, fill="red", text=besedilo, \ 28 font=("Times", 27)) 29 30 # Poveži funkcije z dogodkovnimi rokovalniki 31 gumb = tk.Button(okvir, text="Klikni", command=klik) 32 gumb.configure(width=10) 33 gumb.grid(row=0, column=0, padx=45) 34 35 # Zaženi dogodkovno zanko 36 okno.mainloop() 37