Пређи на садржај

Tkinter

С Википедије, слободне енциклопедије

Tkinter је библиотека (модул) за графички кориснички интерфејс (ГУИ) у програмском језику Пајтон. Tkinter је заснован на библиотеци Тк, која је један од најстаријих и најпопуларнијих библиотека за креирање компоненти у графичком корисничком интерфејсу. Tkinter је укључен у стандардну инсталацију Пајтона, и доступан је на оперативним системима Linux, Microsoft Windows и MacOS. Tkinter је де-факто Пајтонов стандардни ГУИ[1].

Tkinter је написан од стране Стина Лумхолта[2] и Гуида вон Росума. Tkinter је бесплатан софтвер, издат под Пајтоновом лиценцом[3].

Библиотека је једноставна за коришћење и идеална је за прављење мањих и средњих апликација са графичким интерфејсом, посебно за почетнике који желе да науче како да креирају визуелне апликације. Постоје и неке друге библиотеке за прављење корисничког интерфејса, као што су Kivy, Pygame, Pyglet, PyGObject, PyQt, PySide, и wxPython.

Дефиниције објеката

[уреди | уреди извор]

Овај термин има различита значења у различитим контекстима, али се генерално односи на област у облику правоугаоника негде на радној површини корисника.

Прозор вишег реда

[уреди | уреди извор]

Прозор који се понаша као дете примарног прозора. Садржи стандардни оквир и контроле за управљање на радној површини (попут минимизирање прозора, повећавање прозора и излазак). Обично се може померати по радној површини и могуће је променити његову величину.

Представља термин за било који блок који се може користити за изградњу апликације у графичком корисничком интерфејсу. Главни виџети у Tkinter-у су:

  • Контејнери - Frame (користи се за груписање других виџета у логичке јединице), PanedWindow (омогућава креирање прозора за панелима који могу да се померају), LabelFrame (комбинује функционалности обичног фрејма, са могућношћу приказивања ознаке, односно лабеле на врху)...
  • Дугмад - Button (најосновнији тип дугмета, који се користи за позивање функција када корисник притисне дугме), CheckButton (користи се за прављење опција са два стања: означено и неозначено и погодан је за избор више опција), RadioButton (сличан је претходном, али корисник може да одабере само једну опцију из групе опција), MenuButton (дугме које отвара падајући мени са више опција)
  • Текстуални виџети - Label (класична лабела која приказује текст), Message (нови прозор који приказује одређене поруке), Text.
  • Виџети за унос података - Entry (основни виџет који се користи за унос једне линије текста), Text (омогућава унос више линија текста), Spinbox (омогућава да се унесе број или вредност из унапред дефинисаног опсега бројева или опција), Scale (омогућава избор вредности унутар одређеног опсега помоћу клизача), Combobox (омогућава корисницима да изаберу вредност из падајуће листе, уз могућност да унесу и сопствену вредност)...

Фрејм је основна јединица организације и представља правоугаону област која може да садржи друге виџете.

Дете и родитељ

[уреди | уреди извор]

Када се креира било који виџет, креира се и однос дете-родитељ. На пример, ако поставите лабелу унутар фрејма, фрејм је родитељ те лабеле.

Пример минималне апликације

[уреди | уреди извор]

У наставку је дата минимална апликација написана у Пајтону, користећи модул Tkinter:[4]

from tkinter import *
root = Tk() 							# Креира се основни прозор 
w = Label(root, text="Zdravo svete!") 	# Креира се лабела са текстом
w.pack() 								# Лабела се ставља у прозор
root.mainloop() 						# Покреће се прозор

Процес креирања виџета

[уреди | уреди извор]

Постоје 4 корака како би се направио било који виџет[5]:

  • Create - креирање виџета у оквиру фрејмa.
  • Configure - промена особина виџета (пример: промена боје фонта изабране лабеле).
  • Pack - „паковање” виџета на позицију, тако да буде видљив. Програмери имају опцију и да користе методу .grid(row = int, column = int), где је потребно дефинисати број реда и колоне у којој ће се позиционирати виџет (број реда и колоне мора бити цео број), и методу .place(relx = int/decimal, rely = int/decimal), где се дефинишу x и y координате где ће се позиционирати виџет у оквиру фрејма или прозора.
  • Bind - везивање виџета за неку функцију или догађај.

Једноставна апликација

[уреди | уреди извор]

Користећи објектно-оријентисано програмирање у Пајтону, можемо направити следећу једноставну апликацију:

import tkinter as tk

class Application(tk.Frame):

    def __init__(self, root=None):
        tk.Frame.__init__(self, root)
        self.grid()
        self.createWidgets()

    def createWidgets(self):
        self.medialLabel = tk.Label(self, text='Hello, World!')
        self.medialLabel.config(bg="#00ffff")
        self.medialLabel.grid()
        self.quitButton = tk.Button(self, text='Quit', command=self.quit)
        self.quitButton.grid()

app = Application()
app.mainloop()
Објашњење кода
[уреди | уреди извор]
  • линија 1 - увоз модула Tkinter, али под називом „tk”.
  • линија 3 - креирање класе Application која наслеђује Tkinter-ову класу Frame.
  • линија 5 - дефинише функцију која поставља фрејм.
  • линија 6 - позива конструктор за родитељску класу Frame.
  • линија 10 - дефинисање виџета.
  • линија 11 - креирање лабеле, под називом МediaLabel, са текстом „Hello, World!”
  • линија 12 - постављање позадине лабеле MediaLabel на цијан боју.
  • линија 13 - постављање виџета на апликацију, тако да буде видљив.
  • линија 14 - креирање дугмета са текстом „Quit” и функцијом која се активира када се притисне дугме - функција подразумева излазак из апликације.
  • линија 15 - постављање виџета на апликацију, тако да буде видљив.
  • линија 17 - креирање инстанце класе Application.
  • линија 18 - покретање главне петље апликације, која се стално извршава док се апликација не затвори, и која чека унос са тастатуре или миша.

Референце

[уреди | уреди извор]
  1. ^ „TkInter - Python Wiki”. wiki.python.org. Приступљено 2024-12-18. 
  2. ^ „tkinter — Python interface to Tcl/Tk — Python 3.9.21 documentation”. docs.python.org. Приступљено 2024-12-17. 
  3. ^ „Tkinter - Tkinter Wiki”. web.archive.org. 2013-11-13. Архивирано из оригинала 13. 11. 2013. г. Приступљено 2024-12-18. 
  4. ^ „2. A minimal application”. tkdocs.com. Приступљено 2024-12-17. 
  5. ^ „16. Events and Binds in Tkinter | Tkinter | python-course.eu”. python-course.eu. Приступљено 2024-12-18.