Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import ttk
  3. from table import Table
  4.  
  5. from random import random, randint
  6.  
  7.  
  8. # Akna väljanägemist kirjeldavad konstandid
  9. FRAMEPADDING = 10
  10. MIN_HEIGHT = 300
  11. MIN_TABLESIZE = 250
  12. MIN_SETTINGSSIZE = 200
  13.  
  14.  
  15. class App(Tk):
  16. """
  17. Kõige kõrgema taseme element meie kasutajaliideses
  18. """
  19.  
  20. def __init__(self, title='', geometry='800x600', *args, **kwargs):
  21. """
  22. Akna ülesseadmine
  23. """
  24.  
  25. # Ülemklassi konstruktori toimetused, tundmatud argumendid anname sinna edasi
  26. super().__init__(*args, **kwargs)
  27.  
  28. # Seame akna pealkirja
  29. self.title(title)
  30. # Seame akna esialgse suuruse
  31. # self.geometry(geometry)
  32. # Seame konstantide põhjal akna minimaalse suuruse (kaks raami kõrvuti + õhuruum)
  33. self.minsize(width=MIN_TABLESIZE+MIN_SETTINGSSIZE+3*FRAMEPADDING, height=MIN_HEIGHT)
  34.  
  35. # Lisame aknasse elemendid
  36. self.addWidgets()
  37.  
  38. # Genereerime juhuslikud andmed ning kuvame need tabelis
  39. self.generateTestData()
  40.  
  41.  
  42. def addWidgets(self):
  43. """
  44. Lisame loodud aknasse kasutajaliidese elemendid ning seadistame nende paigutuse
  45. """
  46.  
  47. # Vasakpoolse raami loomine
  48. self.tableFrame = ttk.LabelFrame(self, text='Tabel')
  49. self.tableFrame.grid(padx=(FRAMEPADDING, FRAMEPADDING//2), pady=FRAMEPADDING, sticky=N+S+W+E)
  50. # Vasakpoolne raam laieneb koos aknaga
  51. self.columnconfigure(0, weight=1)
  52. # Mõlemad raamid lähevad koos aknaga kõrgemaks
  53. self.rowconfigure(0, weight=1)
  54.  
  55. # Seadistuste vaade akna paremas servas
  56. self.settingsFrame = ttk.LabelFrame(self, text='Sätted')
  57. self.settingsFrame.grid(row=0, column=1, padx=(FRAMEPADDING // 2, FRAMEPADDING), pady=FRAMEPADDING, sticky=N+S+W+E)
  58. # Parempoolne raam aknaga koos laiemaks ei lähe
  59. self.columnconfigure(1, weight=0, minsize=MIN_SETTINGSSIZE)
  60.  
  61. # Näidisisend meie loodud tabeli klassist
  62. self.exampleTable = Table(self.tableFrame)
  63. # Tabeli element peab võtma kogu tableFrame'i sisemuse enda alla ning sellega kaasa venima
  64. self.exampleTable.grid(sticky=N+S+W+E)
  65. self.tableFrame.columnconfigure(0, weight=1)
  66. self.tableFrame.rowconfigure(0, weight=1)
  67.  
  68. # Sätete kirjeldused ning sisendid
  69. test2 = ttk.Label(self.settingsFrame, text="Here be settings..(or dragons)!")
  70. test2.grid()
  71.  
  72. def generateTestData(self):
  73. """
  74. Näidisandmete genereerimine ning tabelis näitamine
  75. """
  76. # Andmete genereerimine (list comprehensions)
  77. exampleData = [[round(random()*1000, randint(0, 4)) for i in range(10)] for j in range(20)]
  78. # Joonistame näidisandmetega tabeli
  79. self.exampleTable.drawTable(exampleData)
  80. # Uuendame lahtrit kohal 0:0
  81. self.exampleTable.updateCell(0, 0, "Lahtri uuendamine")
  82. # Lisame tabeli lõppu uue rea
  83. self.exampleTable.addRow(['Lisame', 'tabelisse', 'uue', 'rea', 0, 0, 0, 0, 0, 0])
  84. # Uuendame ühte olemasolevat rida
  85. self.exampleTable.updateRow(2, ['Uuendame', 'olemasolevat', 'rida', 0, 0, 0, 0, 0, 0, 0])
  86.  
  87. def run(self):
  88. """
  89. Käivitame Tkinteri sündmuste töötluse korduse
  90. """
  91. self.mainloop()
  92.  
  93.  
  94. # Kui käivitatakse käesolevat faili (mitte ei impordita seda mõnest teisest)
  95. if __name__ == '__main__':
  96. # Loome isendi oma rakenduse klassist
  97. app = App('Tabeli näide')
  98. # ... ning käivitame run meetodi
  99. app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement