{"id":123,"date":"2020-11-03T09:34:37","date_gmt":"2020-11-03T09:34:37","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=123"},"modified":"2026-01-08T11:02:49","modified_gmt":"2026-01-08T11:02:49","slug":"tkinteri-vidinad","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/tkinteri-vidinad\/","title":{"raw":"Tkinteri vidinad","rendered":"Tkinteri vidinad"},"content":{"raw":"Eelnevates n\u00e4idisprogrammides oleme kasutanud erinevaid Tkinteri vidinaid nagu tekstisildid, tekstisisestuskastid ja nupud. J\u00e4rgnevalt vaatame \u00fckshaaval \u00fcle erinevad Tkinteri vidinaid n\u00e4idete abil.\r\n<h1>Tekstisilt<\/h1>\r\nTekstisildi loomiseks kasutasime k\u00e4sklust:\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">tekstisilt = ttk.Label(raam, text=\"Tekstisildil olev tekst.\")<\/code>\r\n\r\nSelleks, et kuvada tekstisildil muutuja v\u00e4\u00e4rtust, on v\u00f5imalus luua StringVar t\u00fc\u00fcpi muutuja ja kasutada seda tekstisildil:\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">tekst = StringVar()<\/code>\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">tekstisilt = ttk.Label(raam, textvariable = tekst)<\/code>\r\n\r\nSellisel juhul tuleb tekstisildil olevat silti muuta muutes muutuja v\u00e4\u00e4rtust:\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">tekst.set(\"Tekstisildil olev tekst.\")<\/code>\r\n<h1>Pildid tahvlile<\/h1>\r\nPildifaile kasutades on v\u00f5imalik tahvlile lisada pilte. Lubatud on .gif, .png, .pgm ja .ppm formaadis pildifailid. J\u00e4rgmise n\u00e4ite kasutamiseks salvesta programmiga samasse kausta j\u00e4rgmised failid: <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/kuusk.gif\">kuusk.gif<\/a>, <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/lill.gif\">lill.gif<\/a>.\r\n\r\n<strong>N\u00e4iteprogramm. Pildid tahvlil<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from tkinter import * # tkinteri p\u00f5hivahendid\r\nfrom tkinter import ttk # platvormi \u00fchise stiili saamiseks\r\n\r\nraam = Tk()\r\nraam.title(\"Tahvel\")\r\ntahvel = Canvas(raam, width=400, height=400, background=\"white\")\r\ntahvel.grid()\r\n\r\n# pildi kuvamisel on vaja k\u00f5igepealt laadida pilt ja panna see siis tahvlile\r\nkuusk = PhotoImage(file=\"kuusk.gif\")\r\nimg = tahvel.create_image(250, 80, image=kuusk)\r\n\r\n# activeimage m\u00e4\u00e4rab pildi, mida n\u00e4idatakse, kui hiirekursor on pildi kohal\r\n# anchor n\u00e4itab, mille j\u00e4rgi pilt paigutatakse (antud juhul \u00fclemise-vasaku nurga j\u00e4rgi)\r\nlill = PhotoImage(file=\"lill.gif\")\r\nimg = tahvel.create_image(50, 200, image=kuusk, activeimage=lill, anchor=NW)\r\n\r\nraam.mainloop()<\/pre>\r\n<strong>Moodul PIL ja pildi suuruse muutmine<\/strong>\r\n\r\nTuntumate formaatide jaoks nagu JPEG\/JPG ja PNG on vaja kasutada mooduli ImageTk abi ja pildiklasse PIL (Photo Imaging Library) paketist. Need paketid tuleks siis eelnevalt lisada (Thonnys valik Tools-&gt; Manage Packages...) . PIL toetab \u00fcle 30 erineva pildiformaadi ja muudab need programmi jaoks pildiobjektideks.\r\n\r\nVaatame n\u00e4idet, kuidas kasutada\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from tkinter import *\r\nfrom tkinter import ttk\r\nfrom PIL import ImageTk, Image #impordidakse PIL moodul\r\nroot = Tk()\r\ncanvas = Canvas(root, width = 300, height = 300)\r\ncanvas.pack()\r\npilt = Image.open(\"pall.png\").resize((100, 100)) # pildi pall.png lisamine ja suuruse muutmine 100 piksli k\u00f5rguseks\r\npildiobjekt = ImageTk.PhotoImage(pilt) # pildiobjekti loomine tahvlile asetamiseks\r\n\r\n# J\u00e4rgmisel real on lisaks pildi lisamisele kasutatud parameetreid 20, 20 ja anchor, mida pole vaja kasutada.\r\n# 20 ja 20 v\u00f5imaldavad pildilt v\u00e4lja j\u00e4tta 20 pikslit serva. Anchor n\u00e4itab, et \u00e4ra l\u00f5igatakse \u00fclemine (N-north) ja vasak (W-west) serv.\r\ncanvas.create_image(20, 20, anchor=NW, image=pildiobjekt) # pildiobjekti lisamine tahvlile l\u00f5igates servad\r\nroot.mainloop()<\/pre>\r\nSageli l\u00e4heb vaja pildi muutmist ka funktsioonis. Selleks v\u00f5ib luua muutuja pilt globaalsena: <em>global pilt = ...<\/em> ja seda kasutada funktsioonis.\r\n<h1>Nupp<\/h1>\r\nEsimeses n\u00e4iteprogrammis juba kasutasime nuppu. Nupu puhul on oluline m\u00e4\u00e4rata, kuhu see paigutatakse (raam), mis teksti sellel kuvatakse (\"Tervita!\") ja mis funktsioon nupuvajutusel k\u00e4ivitatakse (tervita):\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp = ttk.Button(raam, text='Tervita!\" command=tervita)<\/code>\r\n\r\nK\u00fcll aga on nupul veel huvitavaid funktsioone:\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.invoke() # aktiveerib nupu selliselt, et saab vajutada ka enter-klahvi kasutades.<\/code>\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.state(['disabled']) # muudab nupu mitteaktiivseks<\/code>\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.state(['!disabled']) # eemaldab nupult mitteaktiivsuse<\/code>\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.instate(['disabled']) # tagastab t\u00f5ese v\u00e4\u00e4rtuse (True) kui nupp on mitteaktiivne<\/code>\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.instate(['!disabled']) # tagastab v\u00e4\u00e4ra v\u00e4\u00e4rtuse (False) kui pole mitteaktiivne<\/code>\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.instate(['!disabled'], k\u00e4sklus) # k\u00e4ivitab k\u00e4skluse, kui nupp pole mitteaktiivne<\/code>\r\n<h1>M\u00e4rkeruut<\/h1>\r\nVahel on vaja, et kasutaja programmis m\u00e4rgiks linnukesega sobivad valikud. Selleks saab kasutada m\u00e4rkeruutu (ingl <em>checkbox).<\/em>\r\n\r\nN\u00e4iteprogramm m\u00e4rkeruudu m\u00e4rke lugemisest:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from tkinter import *\r\nraam = Tk()\r\ndef valitud():\r\n    print(\"Meessoost: \" + str(muutuja1.get()) + \", naissoost: \" + str(muutuja2.get()))\r\n\r\nmuutuja1 = IntVar()\r\nCheckbutton(raam, text=\"mees\", variable=muutuja1).grid(row=1, sticky=W)\r\nmuutuja2 = IntVar()\r\nCheckbutton(raam, text=\"naine\", variable=muutuja2).grid(row=2, sticky=W)\r\nButton(raam, text=\"N\u00e4ita tulemus\", command=valitud).grid(row=4, sticky=W, pady=4)\r\nmainloop()<\/pre>\r\n<h1>Raadionupp<\/h1>\r\nKui m\u00e4rkeruut v\u00f5imaldas valida mitu valikut, siis raadionupp (ingl <em>radio button<\/em>) on sarnaste v\u00f5imalustega, kuid v\u00f5imaldab valida \u00fche valiku.\r\n\r\nN\u00e4iteprogramm raadiunupu kasutamisest:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from tkinter import *\r\nfrom tkinter import ttk\r\ndef valitud():\r\nvalik = \"Valisid valiku: \" + str(muutuja.get())\r\nsilt.config(text = valik)\r\n\r\nraam = Tk()\r\n\r\nmuutuja = IntVar()\r\nR1 = Radiobutton(raam, text=\"Valik 1\", variable=muutuja, value=1, command=valitud)\r\nR1.pack( anchor = W )\r\n\r\nR2 = Radiobutton(raam, text=\"Valik 2\", variable=muutuja, value=2, command=valitud)\r\nR2.pack( anchor = W )\r\n\r\nR3 = Radiobutton(raam, text=\"Valik 3\", variable=muutuja, value=3, command=valitud)\r\nR3.pack(anchor = W)\r\n\r\nsilt = Label(raam)\r\nsilt.pack()\r\nraam.mainloop()<\/pre>\r\n<h1>Tekstisisestuskast<\/h1>\r\nTekstisisestuskasti kasutasime ka esimeses n\u00e4iteprogrammis. Tasub vaid meelde tuletada, et tekstikastist teksti lugemiseks tasuks luua muutuja:\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">kasutajanimi = StringVar()<\/code>\r\n\r\nJa seda saaks siis hiljem kasutada tekstikastist n\u00e4iteks kasutajanime k\u00fcsimisel:\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nimi = ttk.Entry(raam, textvariable=kasutajanimi)<\/code>\r\n\r\nTekstikasti sisestatud v\u00e4\u00e4rtuse saab funktsioonis k\u00e4tte tekstikastist k\u00e4suga nimi.get().\r\n\r\nSamuti saab tekstikasti t\u00fchjaks teha k\u00e4suga:\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">name.delete(0,'end')<\/code>\r\n\r\nV\u00f5i vajadusel asendada m\u00f5ne muu tekstiga:\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">name.insert(0, 'Sisesta siia kasutajanimi: ')<\/code>\r\n<h1>Kombokast<\/h1>\r\nKombokast (ingl <em>combo box<\/em>) annab v\u00f5imaluse valida \u00fcks valik etteantud loetelust. Mugav on seda kasutada n\u00e4iteks siis, kui on soov, et kasutaja teeks \u00fche valiku j\u00e4rjendi elementidest.\r\n\r\nKombokasti valikut saab n\u00e4iteks kasutada selliselt:\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">muutuja = StringVar()<\/code>\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">kombokast = ttk.Combobox(raam, textvariable=muutuja)<\/code>\r\n\r\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">riigid['values'] = ('USA', 'Kanada', 'Austraalia')<\/code>\r\n<h2>Ajav\u00f5tus\u00fcsteemi loomine<\/h2>\r\nSageli on vaja luua tiksuvat taimerit ehk ajav\u00f5tus\u00fcsteemi.\r\n\r\nSelleks saab nupp v\u00e4lja kutsuda funktsiooni, mis kutsub iseennast v\u00e4lja iga sekundi tagant (1000 millisekundi) k\u00e4suga after ja kasutada aja jaoks globaalset muutujat:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">def loendamine():\r\n    global aeg\r\n    if aeg &gt; 0:\r\n        tekstisilt.config(text = aeg)\r\n        aeg -= 1\r\n        raam.after(1000, loendamine)<\/pre>\r\nPS! Muutujale aeg peaks p\u00f5hiprogrammis andma algv\u00e4\u00e4rtuse (nt aeg = 10).","rendered":"<p>Eelnevates n\u00e4idisprogrammides oleme kasutanud erinevaid Tkinteri vidinaid nagu tekstisildid, tekstisisestuskastid ja nupud. J\u00e4rgnevalt vaatame \u00fckshaaval \u00fcle erinevad Tkinteri vidinaid n\u00e4idete abil.<\/p>\n<h1>Tekstisilt<\/h1>\n<p>Tekstisildi loomiseks kasutasime k\u00e4sklust:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">tekstisilt = ttk.Label(raam, text=\"Tekstisildil olev tekst.\")<\/code><\/p>\n<p>Selleks, et kuvada tekstisildil muutuja v\u00e4\u00e4rtust, on v\u00f5imalus luua StringVar t\u00fc\u00fcpi muutuja ja kasutada seda tekstisildil:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">tekst = StringVar()<\/code><br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">tekstisilt = ttk.Label(raam, textvariable = tekst)<\/code><\/p>\n<p>Sellisel juhul tuleb tekstisildil olevat silti muuta muutes muutuja v\u00e4\u00e4rtust:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">tekst.set(\"Tekstisildil olev tekst.\")<\/code><\/p>\n<h1>Pildid tahvlile<\/h1>\n<p>Pildifaile kasutades on v\u00f5imalik tahvlile lisada pilte. Lubatud on .gif, .png, .pgm ja .ppm formaadis pildifailid. J\u00e4rgmise n\u00e4ite kasutamiseks salvesta programmiga samasse kausta j\u00e4rgmised failid: <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/kuusk.gif\">kuusk.gif<\/a>, <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/lill.gif\">lill.gif<\/a>.<\/p>\n<p><strong>N\u00e4iteprogramm. Pildid tahvlil<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from tkinter import * # tkinteri p\u00f5hivahendid\r\nfrom tkinter import ttk # platvormi \u00fchise stiili saamiseks\r\n\r\nraam = Tk()\r\nraam.title(\"Tahvel\")\r\ntahvel = Canvas(raam, width=400, height=400, background=\"white\")\r\ntahvel.grid()\r\n\r\n# pildi kuvamisel on vaja k\u00f5igepealt laadida pilt ja panna see siis tahvlile\r\nkuusk = PhotoImage(file=\"kuusk.gif\")\r\nimg = tahvel.create_image(250, 80, image=kuusk)\r\n\r\n# activeimage m\u00e4\u00e4rab pildi, mida n\u00e4idatakse, kui hiirekursor on pildi kohal\r\n# anchor n\u00e4itab, mille j\u00e4rgi pilt paigutatakse (antud juhul \u00fclemise-vasaku nurga j\u00e4rgi)\r\nlill = PhotoImage(file=\"lill.gif\")\r\nimg = tahvel.create_image(50, 200, image=kuusk, activeimage=lill, anchor=NW)\r\n\r\nraam.mainloop()<\/pre>\n<p><strong>Moodul PIL ja pildi suuruse muutmine<\/strong><\/p>\n<p>Tuntumate formaatide jaoks nagu JPEG\/JPG ja PNG on vaja kasutada mooduli ImageTk abi ja pildiklasse PIL (Photo Imaging Library) paketist. Need paketid tuleks siis eelnevalt lisada (Thonnys valik Tools-&gt; Manage Packages&#8230;) . PIL toetab \u00fcle 30 erineva pildiformaadi ja muudab need programmi jaoks pildiobjektideks.<\/p>\n<p>Vaatame n\u00e4idet, kuidas kasutada<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from tkinter import *\r\nfrom tkinter import ttk\r\nfrom PIL import ImageTk, Image #impordidakse PIL moodul\r\nroot = Tk()\r\ncanvas = Canvas(root, width = 300, height = 300)\r\ncanvas.pack()\r\npilt = Image.open(\"pall.png\").resize((100, 100)) # pildi pall.png lisamine ja suuruse muutmine 100 piksli k\u00f5rguseks\r\npildiobjekt = ImageTk.PhotoImage(pilt) # pildiobjekti loomine tahvlile asetamiseks\r\n\r\n# J\u00e4rgmisel real on lisaks pildi lisamisele kasutatud parameetreid 20, 20 ja anchor, mida pole vaja kasutada.\r\n# 20 ja 20 v\u00f5imaldavad pildilt v\u00e4lja j\u00e4tta 20 pikslit serva. Anchor n\u00e4itab, et \u00e4ra l\u00f5igatakse \u00fclemine (N-north) ja vasak (W-west) serv.\r\ncanvas.create_image(20, 20, anchor=NW, image=pildiobjekt) # pildiobjekti lisamine tahvlile l\u00f5igates servad\r\nroot.mainloop()<\/pre>\n<p>Sageli l\u00e4heb vaja pildi muutmist ka funktsioonis. Selleks v\u00f5ib luua muutuja pilt globaalsena: <em>global pilt = &#8230;<\/em> ja seda kasutada funktsioonis.<\/p>\n<h1>Nupp<\/h1>\n<p>Esimeses n\u00e4iteprogrammis juba kasutasime nuppu. Nupu puhul on oluline m\u00e4\u00e4rata, kuhu see paigutatakse (raam), mis teksti sellel kuvatakse (&#8220;Tervita!&#8221;) ja mis funktsioon nupuvajutusel k\u00e4ivitatakse (tervita):<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp = ttk.Button(raam, text='Tervita!\" command=tervita)<\/code><\/p>\n<p>K\u00fcll aga on nupul veel huvitavaid funktsioone:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.invoke() # aktiveerib nupu selliselt, et saab vajutada ka enter-klahvi kasutades.<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.state(['disabled']) # muudab nupu mitteaktiivseks<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.state(['!disabled']) # eemaldab nupult mitteaktiivsuse<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.instate(['disabled']) # tagastab t\u00f5ese v\u00e4\u00e4rtuse (True) kui nupp on mitteaktiivne<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.instate(['!disabled']) # tagastab v\u00e4\u00e4ra v\u00e4\u00e4rtuse (False) kui pole mitteaktiivne<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nupp.instate(['!disabled'], k\u00e4sklus) # k\u00e4ivitab k\u00e4skluse, kui nupp pole mitteaktiivne<\/code><\/p>\n<h1>M\u00e4rkeruut<\/h1>\n<p>Vahel on vaja, et kasutaja programmis m\u00e4rgiks linnukesega sobivad valikud. Selleks saab kasutada m\u00e4rkeruutu (ingl <em>checkbox).<\/em><\/p>\n<p>N\u00e4iteprogramm m\u00e4rkeruudu m\u00e4rke lugemisest:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from tkinter import *\r\nraam = Tk()\r\ndef valitud():\r\n    print(\"Meessoost: \" + str(muutuja1.get()) + \", naissoost: \" + str(muutuja2.get()))\r\n\r\nmuutuja1 = IntVar()\r\nCheckbutton(raam, text=\"mees\", variable=muutuja1).grid(row=1, sticky=W)\r\nmuutuja2 = IntVar()\r\nCheckbutton(raam, text=\"naine\", variable=muutuja2).grid(row=2, sticky=W)\r\nButton(raam, text=\"N\u00e4ita tulemus\", command=valitud).grid(row=4, sticky=W, pady=4)\r\nmainloop()<\/pre>\n<h1>Raadionupp<\/h1>\n<p>Kui m\u00e4rkeruut v\u00f5imaldas valida mitu valikut, siis raadionupp (ingl <em>radio button<\/em>) on sarnaste v\u00f5imalustega, kuid v\u00f5imaldab valida \u00fche valiku.<\/p>\n<p>N\u00e4iteprogramm raadiunupu kasutamisest:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from tkinter import *\r\nfrom tkinter import ttk\r\ndef valitud():\r\nvalik = \"Valisid valiku: \" + str(muutuja.get())\r\nsilt.config(text = valik)\r\n\r\nraam = Tk()\r\n\r\nmuutuja = IntVar()\r\nR1 = Radiobutton(raam, text=\"Valik 1\", variable=muutuja, value=1, command=valitud)\r\nR1.pack( anchor = W )\r\n\r\nR2 = Radiobutton(raam, text=\"Valik 2\", variable=muutuja, value=2, command=valitud)\r\nR2.pack( anchor = W )\r\n\r\nR3 = Radiobutton(raam, text=\"Valik 3\", variable=muutuja, value=3, command=valitud)\r\nR3.pack(anchor = W)\r\n\r\nsilt = Label(raam)\r\nsilt.pack()\r\nraam.mainloop()<\/pre>\n<h1>Tekstisisestuskast<\/h1>\n<p>Tekstisisestuskasti kasutasime ka esimeses n\u00e4iteprogrammis. Tasub vaid meelde tuletada, et tekstikastist teksti lugemiseks tasuks luua muutuja:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">kasutajanimi = StringVar()<\/code><\/p>\n<p>Ja seda saaks siis hiljem kasutada tekstikastist n\u00e4iteks kasutajanime k\u00fcsimisel:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">nimi = ttk.Entry(raam, textvariable=kasutajanimi)<\/code><\/p>\n<p>Tekstikasti sisestatud v\u00e4\u00e4rtuse saab funktsioonis k\u00e4tte tekstikastist k\u00e4suga nimi.get().<\/p>\n<p>Samuti saab tekstikasti t\u00fchjaks teha k\u00e4suga:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">name.delete(0,'end')<\/code><\/p>\n<p>V\u00f5i vajadusel asendada m\u00f5ne muu tekstiga:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">name.insert(0, 'Sisesta siia kasutajanimi: ')<\/code><\/p>\n<h1>Kombokast<\/h1>\n<p>Kombokast (ingl <em>combo box<\/em>) annab v\u00f5imaluse valida \u00fcks valik etteantud loetelust. Mugav on seda kasutada n\u00e4iteks siis, kui on soov, et kasutaja teeks \u00fche valiku j\u00e4rjendi elementidest.<\/p>\n<p>Kombokasti valikut saab n\u00e4iteks kasutada selliselt:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">muutuja = StringVar()<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">kombokast = ttk.Combobox(raam, textvariable=muutuja)<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">riigid['values'] = ('USA', 'Kanada', 'Austraalia')<\/code><\/p>\n<h2>Ajav\u00f5tus\u00fcsteemi loomine<\/h2>\n<p>Sageli on vaja luua tiksuvat taimerit ehk ajav\u00f5tus\u00fcsteemi.<\/p>\n<p>Selleks saab nupp v\u00e4lja kutsuda funktsiooni, mis kutsub iseennast v\u00e4lja iga sekundi tagant (1000 millisekundi) k\u00e4suga after ja kasutada aja jaoks globaalset muutujat:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">def loendamine():\r\n    global aeg\r\n    if aeg &gt; 0:\r\n        tekstisilt.config(text = aeg)\r\n        aeg -= 1\r\n        raam.after(1000, loendamine)<\/pre>\n<p>PS! Muutujale aeg peaks p\u00f5hiprogrammis andma algv\u00e4\u00e4rtuse (nt aeg = 10).<\/p>\n","protected":false},"author":17,"menu_order":9,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-123","chapter","type-chapter","status-publish","hentry"],"part":451,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/users\/17"}],"version-history":[{"count":14,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/123\/revisions"}],"predecessor-version":[{"id":1062,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/123\/revisions\/1062"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/451"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/123\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=123"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=123"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=123"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}