O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI
RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
FARG’ONA FILIALI
TT va KT fakulteti Dasturiy injenering yo’nalishi
652-19 talabasi Yoqubov Umidjonning
“IT/Mutaxassislik tanlov fani (Pyhton tilida dasturlash)” fanidan
Amaliy topshiriq
Mavzu: Kalkulyator dasturini tuzish
Ushbu dedlineda Python's Tkinter yordamida oddiy GUI ilovasini qanday yaratishni ko'rsataman. Ushbu qisqa qo'llanmaning oxirida siz tugmalar va ma'lumotlar yozuvlari bilan oddiy Python ilovasini yaratishingiz va ulardan oddiy funktsiyalarni bajarish uchun foydalanishimiz mumkin.
O'qishni boshlashdan oldin siz Tkinterni o'rnatishingiz va mahalliy qurilmangizda yangi IDLE ochishingiz kerak bo'ladi. Ushbu qo'llanma Python 3.6 ga asoslangan.
Biz birinchi navbatda Tkinterni import qilishdan boshlaymiz va uni osonlashtirish uchun unga qisqaroq "tk" nomini beramiz:
tkinterni tk sifatida import qiling
Tkinter bilan ilova yaratishda birinchi qadam Tkinter atributlarini meros qilib oladigan asosiy sinfingizni aniqlashdir:
tkinterni tk
klassi sifatida import qiling Ilova (tk.Tk):
Endi siz ilovangizni ishga tushirish uchun __init__ argumentidan foydalanasiz va ilova yuklangandan keyin yuklanishi kerak boʻlgan barcha funksiyalarni qoʻshasiz, xuddi shunday, biz ham Tkinterni ishga tushiramiz:
tkinterni tk sifatida import qilingsinf Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
Ushbu nuqtada biz GUI yaratish uchun kerak bo'lgan hamma narsani aniqladik. Shunga qaramay, ushbu sinf uchun biz konteyner va lug'atni belgilashimiz shart emas, chunki ular bir nechta oynalar uchun bir nechta ramkalarni saqlashini xohlasakgina kerak bo'ladi. Buning o'rniga biz Tkinterning dastlabki oynasidan ilovamiz sifatida foydalanamiz. Shunday qilib, bu oyna qanday ko'rinishini sinab ko'rish uchun biz ushbu kodni ishga tushirishimiz mumkin. Kodni ishga tushirish va dasturimizni ishga tushirish uchun biz mainloop() usulidan foydalanishimiz kerak:
tkinterni tk
klassi sifatida import qiling Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)app = Application()
app.mainloop()
Ushbu kodni ishga tushirganimizda, biz quyidagi oynani olishimiz kerak:
Bu bizning ilovamizning asosiy oynasi bo'ladi.
Endi biz davom etamiz va ilovani biroz sozlashimiz mumkin.
Bizning oynamizni sozlashimiz mumkin bo'lgan asosiy sozlash - bu uning o'lchamini tanlash, biz buni Tkinter tomonidan taqdim etilgan "geometriya" usuli yordamida amalga oshirishimiz mumkin:
tkinterni tk sifatida import qilingsinf Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry('500x500')app = Application()
app.mainloop()
Bu erda biz Ilova oynasi uchun 500 dan 500 gacha o'lchamni tayinladik. Endi kodni ishga tushirganimizda 500x500 o'lchamdagi oynani olishimiz kerak:
Yana bir muhim moslashtirish - bu "nom" usuli yordamida amalga oshirilishi mumkin bo'lgan ilova nomi:
tkinterni tk sifatida import qilingclass Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry('500x500')
self.title('Birinchi ilovangiz')app = Application()
app.mainloop()
Ushbu kodni ishga tushirish:
Endi oynamiz tayyor bo'lgach, biz Tkinter asosiy vidjetlari bilan dam olishni boshlashimiz mumkin.
Boshlash uchun yaxshi vidjet bu "Yorliq" vidjetidir. Oynaga istalgan matnni qo'shish uchun "Yorliq" vidjetidan foydalanishingiz mumkin.
"Yorliq" vidjeti oddiy, siz shunchaki unga nom berishingiz va keyin "Yorliq" ga qator argumenti sifatida kerakli matnni qo'shishingiz va siz xohlagan shrift hajmini ham belgilashingiz mumkin:
tkinterni tk sifatida import qilingclass Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry('500x500')
self.title('Sizning birinchi ilovangiz')
first_label = tk.Label(self, text = "Men ajoyib ilovaman!!", shrift=10)
first_label.pack(pady= 2, padx = 2)app = Application()
app.mainloop()
Ikki narsaga e'tibor bering:
Siz "tk" dan foydalanishingiz kerak. “ vidjet nomidan oldin (masalan, tk.Label), Python Tkinterning Label vidjetiga ishora qilayotganingizni bilishi uchun
Vidjetni aniqlagandan so‘ng, uni “.pack” yordamida oynamizga joylashtirishingiz kerak, so‘ngra (x, y) koordinatalarini (padx = 3, pady = 3) belgilash orqali uning o‘rnini sozlashingiz mumkin.
Kodni ishga tushirish:
Biz kiritadigan ikkinchi vidjet bu tugma vidjetidir. Tugmalar Ilovalar uchun muhim xususiyatdir, bu erda biz ularni qanday qo'shish va ulardan qanday foydalanishni o'rganamiz.
Yorliq vidjetiga oʻxshab, tugma vidjeti “tk.Button” yordamida qoʻshilishi mumkin, uning nomini qator argumenti sifatida qoʻshib, soʻngra uni oynaga joylashtirish mumkin:
tkinterni tk sifatida import qilingclass Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry('500x500')
self.title('Sizning birinchi ilovangiz')
first_label = tk.Label(self, text = "Men ajoyib ilovaman!!", shrift=10)
first_label.pack(pady= 2, padx = 2)
first_button = tk.Button(self, text ="Salom dunyo", buyruq = salom)
first_button.pack( pady = 5, padx = 5)app = Application()
app.mainloop()
Kodni ishga tushirish:
E'tibor bering, agar biz ushbu tugmani bossak, hech narsa sodir bo'lmaydi. Endi qiziqarli qism tugmalarga funktsiyalarni belgilashdir. Tugmalar aslida siz python-da belgilagan har qanday funktsiyani chaqirishi va ishga tushirishi mumkin. Siz qilishingiz kerak bo'lgan yagona narsa o'z funktsiyangizni yozish va keyin uni "buyruq = funktsiya nomi" usuli yordamida tugma bilan bog'lashdir. Masalan, "Salom dunyo" ni chop etadigan va uni "salom" deb nomlaydigan oddiy funktsiyani aniqlaymiz:
tkinterni tk sifatida import qilingclass Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry('500x500')
self.title('Sizning birinchi ilovangiz')
first_label = tk.Label(self, text = "Men ajoyib ilovaman!!", shrift=10)
first_label.pack(pady= 2, padx = 2)
first_button = tk.Button(self, text ="Salom dunyo", buyruq = salom)
first_button.pack( pady = 5, padx = 5)def hello():
print("Salom dunyo, men hozirgina birinchi ilovamni yaratdim!!!")app = Application()
app.mainloop()
Ko'rib turganingizdek, biz tugma buyrug'ini "salom" funktsiyasiga tayinladik. Endi kodni ishga tushirganingizda va tugmani bosganingizda, python "salom" funktsiyasini ishga tushirishi kerak va keyin siz ushbu natijani olishingiz kerak:
Xuddi shunday, siz istalgan funksiyani yozishingiz va uni tugmachaga belgilashingiz mumkin va tugmani bosganingizda, u faqat shu funktsiyani ishga tushiradi.
Biz taqdim etadigan oxirgi vidjet - Kirish vidjeti. Kirish qutilari, shuningdek, ilovalarni yaratishda juda muhim xususiyatdir, ayniqsa siz foydalanuvchilardan ma'lumot oladigan interaktiv ilova yaratmoqchi bo'lsangiz.
Biz taqdim etgan ikkita vidjetga oʻxshab, Kirish vidjetini “tk.Entry” yordamida ilovaga qoʻshish va keyin uni oynaga oʻrnatish mumkin, shuni yodda tutingki, “kenglik” argumenti yordamida kirish maydonining kengligini boshqarishingiz mumkin:
tkinterni tk sifatida import qilingclass Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry('500x500')
self.title('Sizning birinchi ilovangiz')
first_label = tk.Label(self, text = "Men ajoyib ilovaman!!", shrift=10)
first_label.pack(pady= 2, padx = 2)
first_button = tk.Button(self, text ="Salom dunyo", buyruq = salom)
first_button.pack( pady = 5, padx = 5) first_entry = tk.Entry(self, width = 30)
first_entry.pack(padx = 7, pady = 7)def hello():
print("Salom dunyo, men hozirgina birinchi ilovamni yaratdim!!!")app = Application()
app.mainloop()
Kodni ishga tushirish:
Endi bizda foydalanuvchilar biz uchun har qanday ma'lumotlarni qo'shishlari mumkin bo'lgan kirish oynasi mavjud. Ushbu kirish qutisi qanday ishlashini ko'rsatish uchun kodni yangilaymiz. Biz "Salom dunyo" tugmasini foydalanuvchi qo'shgan ma'lumotni qabul qilamiz va uni chop qilamiz. Buni amalga oshirish uchun siz kutganingizdek tugma “salom” funksiyasidan kirish oynasidan ma’lumotlarni olib, chop etishni so‘rashi kerak. Kirish maydonidan ma'lumotlarni import qiluvchi atribut ".get()" bo'lib, biz shunchaki istalgan x o'zgaruvchisini aniqlab, funktsiyamizga x = first_entry.get() ni qo'yishimiz mumkin:
tkinterni tk
klassi sifatida import qiling Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry('500x500')
self.title('Sizning birinchi ilovangiz')
first_label = tk.Label( self, text = "Men ajoyib ilovaman!!", shrift=10)
first_label.pack(pady= 2, padx = 2)
first_button = tk.Button(self, text = "Salom dunyo", buyruq = salom)
first_button.pack(pady= 5, padx = 5)
first_entry = tk.Entry(self, width = 30)
first_entry.pack(padx = 7, padx = 7)def salom():
x = first_entry.get()
print(x)app = Application()
app.mainloop()
Biroq, agar kodni shu tarzda ishlatsak, xatoga duch kelamiz, chunki “first_entry” ilova sinfidagi vidjet bo‘lib, uni boshqa funksiyada chaqirib bo‘lmaydi. Ushbu muammoni hal qilishning bir necha yo'li mavjud, ammo soddaligi uchun biz "Ilova" ni qo'shish orqali "birinchi_entry" ni "Ilova" sinfining atributiga aylantirishimiz mumkin. “first_entry” ga, shu tarzda “first_entry” “Application” sinfining atributidir va uni “salom” funksiyasi ichida chaqirish mumkin:
tkinterni tk
sinfi sifatida import qiling Ilova(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry('500x500')
self.title('Sizning birinchi ilovangiz')
first_label = tk.Label( self, text = "Men ajoyib ilovaman!!", shrift=10)
first_label.pack(padx = 3, pady = 3) first_button = tk.Button(self, text ="Salom dunyo", buyruq = salom)
first_button.pack(padx= 5, pady = 5) Ilova.first_entry = tk.Entry(self, width = 30)
Application.first_entry.pack(padx = 7, pady = 7)def salom():
x = Application.first_entry.get()
print(x)app = Application()
app.mainloop()
Endi biz kodni ishga tushirsak va kirish maydoniga biron bir ma'lumotni kiritsak, "Salom dunyo" tugmasini bosish ushbu kirishni chop etishi kerak. Ilovani sovuqroq qilish uchun qo'shimchalardan biri bu qatorni "salom" funksiyasiga qo'shishdir:
Ilova.first_entry.delete(0,tk.END)
Ushbu qator foydalanuvchilar import qilgandan so'ng kirish maydoniga kiritgan ma'lumotlarni o'chiradi (kirish qutisi toza va yangi yozuvlarga tayyor bo'lishi uchun).
Do'stlaringiz bilan baham: |