Darslar 53–54 · 2 ta dars · M. R. Fayziyeva, D. M. Sayfurov, N. S. Xaytullayeva. Informatika va axborot texnologiyalari, 9-sinf. «Nashriyot uyi Tasvir», Toshkent, 2020
54
Amaliy mashg‘ulot: grafik interfeysli ilova
Darslik: 107-bet
MaqsadAmaliy mashg‘ulotda tkinter bilan kichik ilovalar yaratadi: tasodifiy son tugmachasi va ikki sonni qo‘shuvchi oyna, kiritilgan matnni tekshiradi.
Yangi so‘zlar
Entry.get() · Entry.get(): returns the text typed in the field as a stringconfig(text=…) · config(text=…): changes the text of a labelisdigit() · isdigit(): True if a string consists only of digitsvoqea · event: an action of the user, such as pressing a button
Tushuntirish
GUI dasturi voqealarga javob beradi: foydalanuvchi tugmachani bosadi – tegishli funksiya ishlaydi. Kubik oynasida tugmacha random.randint(1, 6) ni chaqiradi va natijani yorliqqa yozadi. Qo‘shish oynasida ikkita Entry maydoni bor: funksiya ularning matnini get() bilan oladi. Foydalanuvchi son o‘rniga harf yozishi mumkin, shuning uchun avval a.isdigit() va b.isdigit() bilan matn faqat raqamlardan iboratligini tekshiramiz; tekshiruvsiz int("abc") ValueError beradi va ilova xatoga uchraydi. Tekshiruv natijasiga ko‘ra, yorliqqa yoki yig‘indi, yoki «Son kiriting» yozuvi chiqariladi. Ilova yaratayotib, haqiqiy shaxsiy ma’lumotlar (parol, manzil, telefon) so‘ralmasin: o‘quv ilovasida faqat sonlar va oddiy matn bo‘lsin. Ilovani ishga tushirishdan oldin har bir vijetning katakchadagi joyini tekshiring, aks holda ular bir-birining ustiga tushishi mumkin.
Namunalar
Kubik tashlash: import tkinter as tk ⏎ import random ⏎ def tashla(): ⏎ natija.config(text=str(random.randint(1, 6))) ⏎ oyna = tk.Tk() ⏎ oyna.title("Kubik") ⏎ natija = tk.Label(oyna, text="") ⏎ natija.grid(row=0, column=0) ⏎ tugma = tk.Button(oyna, text="Tashla", command=tashla) ⏎ tugma.grid(row=1, column=0) ⏎ oyna.mainloop() Tugmacha bosilganda yorliqda 1 dan 6 gacha bitta son paydo bo‘ladi.
Ikki sonni qo‘shish: import tkinter as tk ⏎ def qosh(): ⏎ a = maydon1.get() ⏎ b = maydon2.get() ⏎ if a.isdigit() and b.isdigit(): ⏎ natija.config(text=str(int(a) + int(b))) ⏎ else: ⏎ natija.config(text="Son kiriting") ⏎ oyna = tk.Tk() ⏎ oyna.title("Qo‘shish") ⏎ maydon1 = tk.Entry(oyna, width=8) ⏎ maydon1.grid(row=0, column=0) ⏎ maydon2 = tk.Entry(oyna, width=8) ⏎ maydon2.grid(row=0, column=1) ⏎ tugma = tk.Button(oyna, text="Qo‘sh", command=qosh) ⏎ tugma.grid(row=1, column=0) ⏎ natija = tk.Label(oyna, text="") ⏎ natija.grid(row=1, column=1) ⏎ oyna.mainloop() 7 va 5 yozilsa, yorliqda 12 chiqadi; maydonlarga harf yozilsa, yorliqda Son kiriting paydo bo‘ladi.
Sinfda faoliyat
«Ilova sinovchisi»: juftlik o‘z ilovasini bir-biriga beradi; sinovchi maydonlarga to‘g‘ri va noto‘g‘ri ma’lumot (son, harf, bo‘sh) kiritib, ilova qanday javob berishini jadvalga yozadi.
Mashq
1
Kubik ilovasida yorliqda qaysi qiymatlar paydo bo‘lishi mumkin?
1, 2, 3, 4, 5 yoki 6
2
Ikkita Entry dagi sonlar ko‘paytmasini yorliqqa chiqaruvchi funksiyani yozing (7 va 5 da 35).