Dinamik tiplashtirilgan


Foydalanuvchining grafik interfeysi bilan Tkinter moduli asisoda ishlash



Download 2,94 Mb.
bet50/77
Sana06.10.2022
Hajmi2,94 Mb.
#851613
1   ...   46   47   48   49   50   51   52   53   ...   77
Bog'liq
Dinamik

Foydalanuvchining grafik interfeysi bilan Tkinter moduli asisoda ishlash

Tkinter moduli Python interpretatoriga standart sifatida oʻrnatilgan. U oʻz ichiga foydalanuvchining grafik interfeysini yaratish va amalda qoʻllash uchun yetarli vositalardan tashkil topgan katta sondagi modullarni qamrab olgan.


Odatda, foydalanuvchining grafik interfeysini deganda dastur bilan foydalanuvchi oʻrtasidagi muloqotni tashkil qilishga moʻljallangan oyna nazarda tutiladi. Interfeys oyna, tugma, maydon, vidjet1 va boshqa elementlardan iborat boʻlishi mumkin.
Ilk grafik interfeysni yaratish
Ishni boshlash uchun dastlab Tkinter modulini import qilinadi. и создать окно, в котором мы зададим его название:
from tkinter import *
oyna = Tk()
oyna.title("Bu – fragik interfeys oynasi ")
oyna.mainloop()
B

.1 -rasm. Interfeys oynasi

u buyruqlarning natijasida ekranda .1- rasm paydo boʻladi. Buning uchun dastlab, modul import qilindi. Soʻngra undan olingan Tk sinfining oyna nusxasi yaratildi. Uning title hususiyati interfeys sarlavhasini anglatadi, mainloop() funksiyasi esa interfeys oynasini cheksiz marta tashkil qiladi va shu sababli, u to yopilmaguncha foydalanuvchi bilan muloqotni (oʻzaro ta’sirni) kutadi. Agar mainloop() yozilmagan boʻlsa, ekranda foydalanuvchi uchun hech narsa koʻrsatilmaydi.




Label vidjetini hosil qilish

Interfeys oynasiga satrli ma’lumotarno chiqarish uchun Label sinfidan foydalanish mumkin. Quyidagi misolda Label sinfining lb1 nusxasini yaratilmoqda:


lb1 = Label(oyna, text="Salom").
S

.2a-rasm.

-2b-rasm.


oʻngra grid() funksiyasi yordamida uning oynadagi oʻrni koʻrsatiladi (.2a-pasm):

lb1.grid(column=0, row=0).
Shunday qilib, kod quyidagi holga keldi:
from tkinter import *
oyna = Tk()
oyna.title("Bu – fragik interfeys oynasi ")
lb1 = Label(oyna, text="Salom")
lb1.grid(column=10, row=10)
oyna.mainloop()
Agar grid() funksiyasga muriojaat qilinmasa, matn ekranda koʻrsatilmaydi.
Interfeys oynasiga chiqariladigan matnning shrift va oʻlchamlarni oʻzgartirish mumkin. Buning lb1 nisxaning font parametrini tahrirlash talab qilinadi. Masalan:
lb1 = Label(oyna, text="Salom", font=("Times New Roman", 24)).
E’tibor bering, font parametrini shriftni oʻzgartirish uchun nafaqat Label, balki ihtiyoriy vidjetga uzatish mumkin.
Interfeys oynasi oʻlchamlarini oʻzgartirish uchun geometry() funksiyasidan foydalanish mumkin. Uning umumiy koʻrinishi quyidagicha:
oyna.geometry('XxY').
Bu yerda X oyna kengligini (400 pikselgacha), Y esa balandligini (250 pikselgacha) anglatadi.
Ma’lumki, interfeys oynalarida buyruqli tigmalar keng qoʻllanadi. Oynaga vidjetlarga tigmalarni qoʻshish uchun Button dan foydalanish mumkin. Bu buyruqning umumiy koʻrinishi quyidagicha:
btn = Button(oyna, text="matn").
Masalan:
btn = Button(oyna, text="hisoblash")
btn.grid(column=1, row=0).
Shundan soʻng kod quyidagi koʻrinishni oladi:
from tkinter import *
oyna = Tk()
oyna.title("Bu – fragik interfeys oynasi ")
l

.3a-rasm

.3b-rasm.
b1 = Label(oyna, text="Salom", font=("Times New Roman", 24))
lb1.grid(column=0, row=0)
btn = Button(oyna, text="hisoblash")
btn.grid(column=0, row=1)
oyna.mainloop()
Bu kodning natijasi .3a-rasmda keltirilgan. E’tibor bering, bu kodda tugmani oynaning ikkinchi ustuniga joylashtirligan. Agar tugma 0-chi ustunga joylashtirligan boʻlsa, ekranda faqat tugma koʻrinadi holos.
Zarur boʻlsa, tugmadagi matn yoki boshqa vidjet rangini oʻzgartirish mumkin. Buning uchun fg hususiyatidan foydalaniladi; bg hususiyati esa vidjet fonini oʻzgar/tirishga imkon beradi. Masalan (3b-rasm):
btn = Button(oyna, text="Hisoblash", bg="black", fg="red").
Interfeysdagi “hisoblash” tugmasini chertish mumkin. Tugma biror hodisa bilan bogʻlanmagani uchun hech narsa sodir boʻlmaydi. Tugma chertilganda interpretatorning javob reaksiyasini belgilash uchun tegishli funksiyalarni tashkil qilish talab qilinadi. Dastlab tugma chertilganda ishga tushishi uchun funksiya yoziladi.
def clicked():
lb1.configure(text=" Oyna tugmaga boʻlandi")
Soʻngra bu funksiyani interfeys oynasidagi tugmaga bogʻlanadi. Bu amalni quyidagicha bajariladi:
btn = Button(oyna, text="Hisoblash", command=clicked)
Shundan soʻng kod quyidagi holatga keldi:
from tkinter import *
def clicked():
lb1.configure(text="Oyna tugmaga bog'landi")
oyna = Tk()
oyna.geometry('400x200')
oyna.title("Bu – grafik interfeys oynasi ")
lb1 = Label(oyna, text="Salom", font=("Times New Roman", 24))
lb1.grid(column=10, row=10)
btn=Button(oyna,text="Hisoblash",command=clicked, bg="black", fg="red")
btn.grid(column=100, row=100)
o

.4-rasm.
yna.mainloop()
Interfeys oynasidagi “Hisoblash” tugmasi chertilganda, ekranga .4-rasm uzatiladi.
Interfeys oynasida interpretator foydalanuvchi bilan muloqot qilishi kerak. Buning uchun u foydalanuvchi kiritadigan ma’lumotlarni ham qabul qilishi lozim. Bu muammoni Entry sinfi (Tkinter ning matnli maydoni) yordamida hal qilish mumkin.
Dastab foydalanuvchi kiritishi mumkin boʻlgan ma’lumotlar uchun matnli maydon tashkil qilinadi:
txt = Entry(oyna, width=10)
Shundan keyin uni grid funksiyasi yordamida interfeys oynasiga joylanadi va kod quyidagi shaklga keladi:
from tkinter import *
def clicked():
lb1.configure(text="Oyna tugmaga bog'landi")
oyna = Tk()
oyna.geometry('250x150')
oyna.title("Bu – grafik interfeys oynasi ")
lb1 = Label(oyna, text="Ma’lumot kiritish", font=("Times New Roman", 12))
lb1.grid(column=0, row=0)
txt = Entry(oyna,width=10)
txt.grid(column=1, row=0)
btn = Button(oyna, text="Hisoblash", command=clicked)
b

.5-rasm.
tn.grid(column=2, row=1)
oyna.mainloop()
Bu kod interfeys oynasini .5-rasmdagi koʻrinishga keltiradi.
Tashkil qilingan kiritish oynasiga foydalanuvchi oʻz ma’lumotlarini kiritishi mumkin. Bu ma’lumotlarni get() funksiyasi orqali qabul qilish va qayta ishlash mumkin. Bu ning uchun funksiyani namuna tariqasida quyidagicha oʻzgartirish mumkin:
def clicked():


.6-rasm.
res = "Salom{}".format(txt.get())
lb1.configure(text=res).
Shundan keyin interfeys oynasidagi “Hisoblash” tugmasi chertilsa, kiritsh oynasiga yozilgan matn “Salom” soʻzi bilan birga koʻrsatilishiga guvoh boʻlish mumkin (.6-rasm).
Har gal, kiritish oynasiga yangi ma’lumor kiritish (fokusni oʻzgartirish) uchun, sichqonchani shu oynada chertishga toʻgʻri keladi. Shu holatni dasturlash uchun focus() funksiyasiga murojaat qilish mumkin:
txt.focus().
Kod ishga tushirilganda fokusni kiritish oynasiga oʻtganligini koʻrish mumkin. Bu bilan kiritish oynasiga ma’lumotlarni kiritish imkoniyati yaratildi.
Zarur hollarda fokusni oʻchirib qoʻyish mumkin. Buning uchun Entry funksiyasining state (holat) hususiyatini oʻchirib qoʻyish lozim.
txt = Entry(oyna,width=10, state='disabled').

Koʻpincha foydalanuvchi ma’lumotlarni klaviaturadan emas, balki mavjud ochiladigan roʻyhatdan tanlab kiritishiga toʻgʻri keladi. Bunday roʻyhatlarni tashkil qilish uchun Combobox vidjetidan foydalanish mumkin. Uni oynaga qoʻshish uchun quyidagi koʻrsatmadan foydalaniladi:


from tkinter.ttk import Combobox
combo = Combobox(oyna).
Shundan soʻng roʻyhat maydonlariga ma’lumotlarni kiritish mumkin. Buning uchun yuqoridagi kodga quyidagi buyruqlarni qoʻshish lozim:
combo['values'] = (1, 2, 3, 4, 5, "Matn")
combo.current(1) # variantlardan birini koʻrsating
c

.7-rasm.
ombo.grid(column=0, row=2)
Interfeys oynasini yaratish jarayonida uning vidjetllarini yuqori did bilan joylashtirish talab qilinadi. S huning uchun koddagi ayrim elementlarning oʻrni oʻzgartirilgan. Agar kod ishga tushirilsa, ekranga .7-rasmda tasvirlangan oyna uzatiladi.
Koʻrinib turibdiki, combobox ga elementlarni tuple qiymatidan foydalangan holda kiritilmoqda. Ochilgan roʻyhatdan tanlangan element indeksini (select) olish uchun get funksiyasini quyidagicha yoozish kerak:

Download 2,94 Mb.

Do'stlaringiz bilan baham:
1   ...   46   47   48   49   50   51   52   53   ...   77




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish