Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from tkinter import ttk
- from table import Table
- from random import random, randint
- # Akna väljanägemist kirjeldavad konstandid
- FRAMEPADDING = 10
- MIN_HEIGHT = 300
- MIN_TABLESIZE = 250
- MIN_SETTINGSSIZE = 200
- class App(Tk):
- """
- Kõige kõrgema taseme element meie kasutajaliideses
- """
- def __init__(self, title='', geometry='800x600', *args, **kwargs):
- """
- Akna ülesseadmine
- """
- # Ülemklassi konstruktori toimetused, tundmatud argumendid anname sinna edasi
- super().__init__(*args, **kwargs)
- # Seame akna pealkirja
- self.title(title)
- # Seame akna esialgse suuruse
- # self.geometry(geometry)
- # Seame konstantide põhjal akna minimaalse suuruse (kaks raami kõrvuti + õhuruum)
- self.minsize(width=MIN_TABLESIZE+MIN_SETTINGSSIZE+3*FRAMEPADDING, height=MIN_HEIGHT)
- # Lisame aknasse elemendid
- self.addWidgets()
- # Genereerime juhuslikud andmed ning kuvame need tabelis
- self.generateTestData()
- def addWidgets(self):
- """
- Lisame loodud aknasse kasutajaliidese elemendid ning seadistame nende paigutuse
- """
- # Vasakpoolse raami loomine
- self.tableFrame = ttk.LabelFrame(self, text='Tabel')
- self.tableFrame.grid(padx=(FRAMEPADDING, FRAMEPADDING//2), pady=FRAMEPADDING, sticky=N+S+W+E)
- # Vasakpoolne raam laieneb koos aknaga
- self.columnconfigure(0, weight=1)
- # Mõlemad raamid lähevad koos aknaga kõrgemaks
- self.rowconfigure(0, weight=1)
- # Seadistuste vaade akna paremas servas
- self.settingsFrame = ttk.LabelFrame(self, text='Sätted')
- self.settingsFrame.grid(row=0, column=1, padx=(FRAMEPADDING // 2, FRAMEPADDING), pady=FRAMEPADDING, sticky=N+S+W+E)
- # Parempoolne raam aknaga koos laiemaks ei lähe
- self.columnconfigure(1, weight=0, minsize=MIN_SETTINGSSIZE)
- # Näidisisend meie loodud tabeli klassist
- self.exampleTable = Table(self.tableFrame)
- # Tabeli element peab võtma kogu tableFrame'i sisemuse enda alla ning sellega kaasa venima
- self.exampleTable.grid(sticky=N+S+W+E)
- self.tableFrame.columnconfigure(0, weight=1)
- self.tableFrame.rowconfigure(0, weight=1)
- # Sätete kirjeldused ning sisendid
- test2 = ttk.Label(self.settingsFrame, text="Here be settings..(or dragons)!")
- test2.grid()
- def generateTestData(self):
- """
- Näidisandmete genereerimine ning tabelis näitamine
- """
- # Andmete genereerimine (list comprehensions)
- exampleData = [[round(random()*1000, randint(0, 4)) for i in range(10)] for j in range(20)]
- # Joonistame näidisandmetega tabeli
- self.exampleTable.drawTable(exampleData)
- # Uuendame lahtrit kohal 0:0
- self.exampleTable.updateCell(0, 0, "Lahtri uuendamine")
- # Lisame tabeli lõppu uue rea
- self.exampleTable.addRow(['Lisame', 'tabelisse', 'uue', 'rea', 0, 0, 0, 0, 0, 0])
- # Uuendame ühte olemasolevat rida
- self.exampleTable.updateRow(2, ['Uuendame', 'olemasolevat', 'rida', 0, 0, 0, 0, 0, 0, 0])
- def run(self):
- """
- Käivitame Tkinteri sündmuste töötluse korduse
- """
- self.mainloop()
- # Kui käivitatakse käesolevat faili (mitte ei impordita seda mõnest teisest)
- if __name__ == '__main__':
- # Loome isendi oma rakenduse klassist
- app = App('Tabeli näide')
- # ... ning käivitame run meetodi
- app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement