Knjiga - mrežno i paralelno programiranje
8. Dogovor o pisanju programa s grafičkim korisničkim sučeljem
Nije obavezan dio, ali pogledajte ako imate vremena, ako ne, odmah pređite na lekciju 9.
Danas je u programiranju sveopće prihvaćena paradigma objektno usmjerenog programiranja. Takav pristup koristit ćemo i mi u svojim programima. Program ćemo kreirati kao klasu, na kraju ćemo kreirati instancu klase, tj. objekt i time pokrenuti program.
Budući da ćemo se u svakom programu koristiti klasom Frame, kreirat ćemo klase koje će ju nasljeđivati. U ovom trenutku implementacija će se sastojati samo od konstruktora. Unutar njega ćemo definirati: naslov prozora, parametre vezane uz sam prozor, povezati prozor s okvirom, definirati geometriju prozora te pozvati metodu koja će kreirati ostale elemente sučelja. Sve ostale elemente sučelja definirat ćemo u posebnoj metodi KreirajSucelje() koja će u prozor dodati sve ostale elemente sučelja. Svaki element sučelja postavit ćemo kao parametar klase unutar koje se nalazi program. Ilustrirajmo to na prethodnom primjeru:
Primjer 2 iz 7. Tkinter - okviri i gumbi
from tkinter import *
t = Tk()
t.config()
f = Frame(t)
f.grid(rows=2, columns=2)
a = Button(f, text='Gumb A', fg='blue', font=('Calibri', 14, 'bold'))
a.grid(row = 1, column = 1)
b = Button(f, text='Gumb B', fg='green', font=('Calibri', 14, 'bold'))
b.grid(row=1, column=2)
c = Button(f, text='Gumb C', fg='red', font=('Calibri', 14, 'bold'))
c.grid(row=2, column=1, columnspan=2)
mainloop()
Objektno usmjereno programiranje - isti primjer napisan na drugi način:
from tkinter import *
#Klasa Program koja nasljeđuje klasu Frame
class Program(Frame):
#Konstruktor klase kao parametar ima prozor
#programa unutar kojeg će se nalaziti okvir
def __init__(self, root):
self.root = root
self.root.title('Tri gumba')
#pozivamo konstruktor klase Frame, čiji je parametar prozor programa
super().__init__(self.root)
self.grid(rows = 2, columns = 2)
self.KreirajSucelje()
return
def KreirajSucelje(self):
f = ('Calibri', 14, 'bold')
self.A = Button(self, text = 'Gumb A', fg = 'blue', font = f)
self.A.grid(row = 1, column = 1)
self.B = Button(self, text = 'Gumb B', fg = 'green', font = f)
self.B.grid(row = 1, column = 2)
self.C = Button(self, text = 'Gumb C', fg = 'red', font = f)
self.C.grid(row = 2, column = 1, columnspan = 2)
return
def main():
#Kreiramo instancu klase Program, čiji je parametar prozor glavnog programa -
#objekt tipa Tk
p = Program(Tk())
mainloop()
return
main()