A GUI elemeket és azok funkcionalitását a tkinter modulban definiáljuk. A következő kód egy alap felhasználói felület létrehozásának lépéseit mutatja be.

from tkinter import * 

ablak=Tk() 

# add widgets here 

ablak.title('MálnaPc') 

ablak.geometry("300x200+10+20") 

ablak.mainloop()

Először is, importáljuk a tkinter modult. Az importálás után állítsuk be az alkalmazás objektumot a Tk() függvény meghívásával. Ez létrehoz egy legfelső szintű ablakot (root), a példánkban „ablak” néven, amely egy keretet tartalmaz címsorral, egy vezérlődobozt a minimalizáló és bezáró gombokkal, valamint egy ügyfélterületet más widgetek tárolására. A geometry() metódus az alábbiak szerint határozza meg a keret bal felső sarkának szélességét, magasságát és koordinátáit (minden érték pixelben van megadva):

# ablak mérete és pozíciója pixelben
ablak.geometry("widthxheight+XPOS+YPOS")

Az alkalmazásobjektum ezután a mainloop() metódus meghívásával belép egy eseményfigyelő ciklusba. Az alkalmazás most folyamatosan várja a benne lévő elemeken generált eseményeket. Az esemény lehet egy szövegmezőbe beírt szöveg, egy legördülő menüből, vagy rádiógombból történt kiválasztás, az egér egyszeri/dupla kattintásos műveletei stb. Az alkalmazás funkcionalitása magában foglalja a megfelelő visszahívási függvények végrehajtását egy adott típusú eseményre válaszul. Az eseménykezelést később fogjuk tárgyalni ebben a leírásban. Az eseményhurok akkor és úgy fejeződik be, amikor a címsoron lévő bezárás gombra kattintunk. A fenti kód egy alap ablakot hoz létre, egyelőre vezérlők (widgetek) nélkül.

Minden tkinter widget elem a Widget osztályból öröklődik. Adjuk hozzá a leggyakrabban használt vezérlőket jelenleg még üres ablakunkhoz.

A Button (gomb) widget

A gomb a Button osztály segítségével hozható létre. A Button osztály konstruktorának szüksége van a főablak nevére, és az opciókra való hivatkozásra.

Formátum: Button (window, attributes)

A gomb testreszabásához a következő fontos tulajdonságokat állíthatjuk be:

text: a gomb felirata

bg: háttérszín

fg: előtérszín

font: betűtípus neve és mérete

image: a szöveg helyett megjelenítendő kép

command: a gombra kattintáskor meghívandó függvény

Egy egyszerű mintaprogram:

from tkinter import * 

ablak=Tk() 

btn=Button(ablak, text="Íme a  Button widget", fg='red') 

btn.place(x=70, y=100) 

ablak.title('MálnaPc') 

ablak.geometry("300x200+10+10") 

ablak.mainloop()

A Label (címke) widget 

Címke hozható létre a felhasználói felületen Pythonban a Label osztály segítségével. A Label konstruktornak szüksége van a felső szintű ablakobjektumra és az opciók paramétereire. Az opciós paraméterek hasonlóak a Button objektumhoz. 

 Az alábbiakban egy címkét adunk hozzá az ablakhoz.

from tkinter import * 

window=Tk() 

lbl=Label(window, text="This is Label widget", fg='red', font=("Helvetica", 16)) 

lbl.place(x=60, y=50) 

window.title('MálnaPc') 

window.geometry("300x200+10+10") 

window.mainloop()

Az Entry (beviteli mező) widget 

Ez a widget egy egysoros szövegdobozt jelenít meg a felhasználói bevitel elfogadásához. Többsoros szövegbevitelhez használja a Text widgetet. A már említett tulajdonságokon kívül az Entry osztály konstruktora a következőket fogadja el:

bd : a szövegdoboz keretének mérete; alapértelmezett értéke 2 pixel.

show : a szövegdoboz jelszómezővé alakításához állítsa a show tulajdonságot “*”-ra.

A következő kódrészlet adja hozzá a szövegmezőt az ablakodhoz:

# szövegmező
txtfld=Entry(window,text="This is Entry Widget", bg='black', fg='white', bd=5)

A következő példa egy ablakot hoz létre egy gombbal, címkével és beviteli mezővel: 

from tkinter import * 

window=Tk() 

btn=Button(window, text="This is Button widget", fg='blue') 

btn.place(x=80, y=100) 

lbl=Label(window, text="This is Label widget", fg='red', font=("Helvetica", 16)) 

lbl.place(x=60, y=50) 

txtfld=Entry(window, text="This is Entry Widget", bd=5) 

txtfld.place(x=80, y=150) 

window.title('MálnaPc') 

window.geometry("300x200+10+10") 

window.mainloop()

Kijelölő widgetek 

Rádiógomb: Ez a widget egy BE/KI állapotú váltógombot jelenít meg. Lehet, hogy egynél több gomb van, de csak az egyik lesz bekapcsolva egy adott időpontban. 

Kiválasztó gomb: Ez is egy váltógomb. A felirat előtt egy téglalap alakú jelölőnégyzet jelenik meg. A BE állapotot a négyzetben lévő pipa jelenik meg, amely eltűnik, amikor a KI gombra kattint. 

Combobox: Ez az osztály a tkinterpackage ttk moduljában van definiálva. Feltölti a legördülő adatokat egy gyűjtemény adattípusából, például egy tuple-ból vagy egy listából értékparaméterként. 

Listbox: A Comboboxtól eltérően ez a widget a karakterláncelemek teljes gyűjteményét megjeleníti. A felhasználó kijelölhet egy vagy több elemet.

A következő példa a kijelölési widgeteket tartalmazó ablakot mutatja be: Radiobutton, Checkbutton, Listbox és Combobox: 

from tkinter import * 
from tkinter.ttk import Combobox 
window=Tk() 
var = StringVar() 
var.set("one") 
data=("one", "two", "three", "four") 
cb=Combobox(window, values=data, width=15) 
cb.place(x=10, y=150) 
lb=Listbox(window, height=5, selectmode='multiple') 
for num in data: 
    lb.insert(END,num) 
lb.place(x=200, y=150) 
v0=IntVar() 
v0.set(1) 
r1=Radiobutton(window, text="Python 2", variable=v0,value=1) 
r2=Radiobutton(window, text="Python 3", variable=v0,value=2) 
r1.place(x=100,y=50) 
r2.place(x=180, y=50) 
v1 = IntVar() 
v2 = IntVar() 
C1 = Checkbutton(window, text = "Cricket", variable = v1) 
C2 = Checkbutton(window, text = "Tennis", variable = v2) 
C1.place(x=105, y=100) 
C2.place(x=185, y=100) 
window.title('MálnaPc') 
window.geometry("400x300+10+10") 
window.mainloop()

A cikk folytatása: https://www.malnasuli.hu/python/egy-raspberry-specifikus-grafikus-alkalmazas/

A előző rész: https://www.malnasuli.hu/python/keszits-hazilag-grafikus-vezerlofeluletet-tkinter-1-resz/