Tk Негіздері
Графикалық интерфейсі бар кез келген бағдарламаның негізгі ерекшелігі-
интерактивтілік. Бағдарлама жай ғана бір нәрсе (пакеттік режимде) өзінің іске
47
қосылуынан аяғына дейін санайды: оның әрекеттері пайдаланушының
араласуына байланысты. Іnternet және WEB-қосымшаларын бағдарламалаус жүзінде, графикалық қосымша оқиғаларды өңдеудің
шексіз циклын орындайды. Графикалық интерфейсті іске асыратын бағдарлама
оқиғалы-бағытталған. Ол өзінің ішкі жағдайына сәйкес өңделетін оқиғалар
интерфейсінен күтеді.
Бұл оқиғалар графикалық интерфейс элементтерінде (виджеттерде) пайда
болады және осы виджеттерге бекітілген өңдеушілермен өңделеді.
Виджеттердің өздері көптеген қасиеттерге ие( түсі, өлшемі, орналасуы), тиісті
иерархияға (бір виджет басқасының иесі болуы мүмкін), жай-күйіне қол
жеткізу әдістері бар.
Виджеттердің орналасуы (басқа виджеттердің ішінде) орналасу
менеджерлері деп аталады. Виджет орналасу менеджерінің ережелері бойынша
орынға орнатылады. Бұл ережелер виджет координаттарын ғана емес, оның
өлшемдерін де анықтай алады. Tk-да орналасқан менеджерлердің үш түрі бар:
қарапайым ораушы (pack), тор (grid) және еркін орналасуы (place).
Бірақ бұл графикалық бағдарлама үшін жеткіліксіз. Себебі, графикалық
бағдарламадағы кейбір виджеттер белгілі бір жолмен өзара байланысты болуы
керек. Мысалы, жылжыту жолағы мәтіндік виджетпен өзара байланысты болуы
мүмкін: жолақты пайдаланған кезде виджеттегі мәтін қозғалуы тиіс және
керісінше, мәтін бойынша жылжыған кезде жолақтың ағымдағы жағдайын
көрсетуі тиіс. TK виджеттері арасындағы байланыс үшін виджеттер мен
параметрлерді бір-біріне беретін айнымалылар қолданылады.
Виджеттер сыныптары
Tk кітапханасында графикалық интерфейсті құру үшін виджеттердің
келесі сыныптары таңдалып алынды (алфавиттік ретпен):
-
Button (түйме) кейбір әрекеттерді шақыру (белгілі бір пәрменді
орындау) үшін қарапайым түйме.
-
Canvas (сурет) графикалық примитивтерді шығару негізі.
-
Checkbutton (құсбелгі) оған басқан кезде екі күй арасында ауыса
алатын түйме.
-
Entry (енгізу өрісі) мәтін жолын енгізуге болатын көлденең өріс.
-
Frame (Рамка) басқа көрнекі компоненттерді қамтитын Виджет.
-
Label (жазу) Виджет мәтінді немесе графикалық суретті көрсете
алады.
-
Listbox (тізім) пайдаланушы бір немесе бірнеше элементтерді
таңдай алатын тізімді тікбұрышты рамка.
-
Menu (мәзір) қалқымалы (popup) және төмен түсетін (pulldown)
мәзірлерді жасауға болатын Элемент.
-
Menubutton (мәзір түймесі) төмендеу мәзірі бар түйме.
-
Message (хабар) жазуларға ұқсас, бірақ ұзын жолдарды бұрауға
және орналасу менеджерінің талабы бойынша өлшемін өзгертуге мүмкіндік
береді.
48
-
Radiobutton (селекторлы түйме) балама мәндердің бірін ұсынуға
арналған түйме. Мұндай түймелер әдетте топта әрекет етеді. Басқан кезде бір
түйме тобы таңдалған, бұдан бұрын "hello world" сөз тіркесінсекіріп"hello world" сөз тіркесін.
-
Scale (Шкала) белгілі бір диапазонда жылжу арқылы сандық мәнді
орындау үшін қызмет етеді.
-
Scrollbar (айналдыру жолағы) айналдыру жолағы басқа виджеттерде
айналдыру көлемін көрсету үшін қолданылады. Мүмкін тік және көлденең.
-
Text (пішімделген мәтін) бұл тікбұрышты виджет әр түрлі
стильдерді пайдаланып мәтінді өңдеуге және пішімдеуге, мәтінге суреттер мен
тіпті терезелерді енгізуге мүмкіндік береді.
-
Toplevel (жоғарғы деңгей терезесі) бөлек терезе ретінде көрсетіледі
және басқа виджеттер ішінде болады.
Бұл сыныптардың барлығы бір - бірімен мұрагерлік қатынастары жоқ-
олар тең. Бұл жинақ көптеген жағдайларда интерфейсті құру үшін жеткілікті.
Қазіргі заманғы графикалық интерфейс жүйесінде пернетақта мен
тінтуірмен байланысты және қандай да бір виджеттің"hello world" сөз тіркесін аумағында"hello world" сөз тіркесін болып
жатқан түрлі оқиғаларды бақылау мүмкіндігі бар. Оқиға елінде мәтіндік жол -
үш элементтен (модификаторлар, оқиғаның түрі және оқиғаның детализациясы)
тұратын оқиға үлгісі түрінде сипатталады.
Виджетті жасау және конфигурациялау
Виджетті жасау тиісті сынып конструкторының шақыруы арқылы жүзеге
асырылады . Конструктор шақыру келесі синтаксис бар:
Widget([master[, option=value, ...]])
Мұнда widget - виджет класы, masterвиджет-иесі, option және value -
конфигурациялық опция және оның мәні (мұндай жұптар бірнеше болуы
мүмкін).
Әрбір виджет config () (немесе configure ())) әдістерімен орнатуға және
сөздіктермен жұмыс істеу әдістеріне ұқсас әдістермен оқуға болатын
қасиеттерге ие. Төменде қасиеттермен жұмыс істеу үшін мүмкін синтаксис:
widget.config(option=value, ...)
widget["hello world" сөз тіркесінoption"hello world" сөз тіркесін] = value
value = widget["hello world" сөз тіркесінoption"hello world" сөз тіркесін]
widget.keys()
Сипат атауы Python тілінің негізгі сөзімен сәйкес келген жағдайда,
атаудан кейін бір астын сызу қолданылады. Сонымен, class қасиетін class_
сияқты, to_ сияқты қою керек.
Виджет конфигурациясын кез келген уақытта өзгертуге болады. Бұл
өзгеріс оқиғаны өңдеу циклына қайта оралғанда немесе update_idletasks ()
айқын қоңырауы кезінде экранда сызылады.
Келесі мысал ішінде екі виджеті бар терезені көрсетеді. Айнымалы жазба
енгізу өрісімен тікелей байланысты. Бұл мысал конфигурациялау
мүмкіндіктерін көрсету үшін көптеген қасиеттерді пайдаланады:
49
from Tkinter import *
tk = Tk()
tv = StringVar()
Label(tk,
textvariable=tv,
relief="hello world" сөз тіркесінgroove"hello world" сөз тіркесін,
borderwidth=3,
font=("hello world" сөз тіркесінCourier"hello world" сөз тіркесін, 20, "hello world" сөз тіркесінbold"hello world" сөз тіркесін),
justify=LEFT,
width=50,
padx=10,
pady=20,
takefocus=False,
).pack()
Entry(tk,
textvariable=tv,
takefocus=True,
).pack()
tv.set("hello world" сөз тіркесін123"hello world" сөз тіркесін)
tk.mainloop()
Нәтижесінде экранда көруге болады:
Сурет 14 – Графикалық интерфейс
Виджеттер жасау кезінде теңшеледі. Сонымен қатар, виджеттер аттармен
байланыспайды, оларды тек виджет-терезе ішінде орналастырады. Бұл мысалда
textvariable (мәтіндік айнымалы), relief (рельеф), borderwidth (шекараның ені),
justify (туралау), width (ені, таныстарда), padx және pady (виджет шегі мен
мазмұн арасындағы пикселдегі қабат), takefocus (Tab пернесін басқан кезде
фокусты қабылдау мүмкіндігі), font (қаріп, оның тапсырмасының бір тәсілі)
қасиеттері қолданылған. Бұл қасиеттер көптеген виджеттер үшін өте типтік,
бірақ кейде өлшем бірліктері өзгеше болуы мүмкін, мысалы, Canvas виджеті
үшін ені танысу емес пикселде беріледі.
Келесі мысалда фонға, алдыңғы жоспарға (мәтінге), виджетті (шекараны
жарықтандыру) белсенді күйде және фокус болмаған кезде бөлу мүмкіндіктері
көрсетіледі:
from Tkinter import *
50
tk = Tk()
tv = StringVar()
Entry(tk,
textvariable=tv,
takefocus=True,
borderwidth=10,
).pack()
mycolor1 = "hello world" сөз тіркесін#%02X%02X%02X"hello world" сөз тіркесін % (200, 200, 20)
Entry(tk,
textvariable=tv,
takefocus=True,
borderwidth=10,
foreground=mycolor1, # fg, текст виджета
background="hello world" сөз тіркесін#0000FF"hello world" сөз тіркесін, # bg, фон виджета
highlightcolor='green', # подсветка при фокусе
highlightbackground='red', # подсветка без фокуса
).pack()
tv.set("hello world" сөз тіркесін123"hello world" сөз тіркесін)
tk.mainloop()
Қаласаңыз, барлық виджеттер үшін мәнерлі опцияларды бірден орнатуға
болады: tk_setPalette () әдісі арқылы. Бұл әдіс бойынша жоғарыда
пайдаланылған сипаттардан басқа, selectForeground және select Background
(алдыңғы жоспар және бөлу фоны), selectColor (таңдалған күйдегі түс, мысалы,
Checkbutton), insertBackground (кірістіру нүктесінің түсі) және т.б. пайдалануға
болады.
Ескертy:
Енгізу өрісінен get () әдісі арқылы да мәнді алуға болады. Мысалы, Entry
класының нысанын E деп атасаңыз, мәнді келесідей алуға болады: e.get(). Рас,
бұл әдіс Text пішімделген мәтін үшін сынып даналарының get() әдісі сияқты
икемділікке ие емес: тек барлық мәнді толығымен алуға болады.
Достарыңызбен бөлісу: |