|
11 tajriba ishi Pythonda istisnolardan foydalanib misollar yechish
|
bet | 5/6 | Sana | 27.01.2024 | Hajmi | 1,49 Mb. | | #147218 |
Bog'liq 11 tajriba ishi15 tajriba ishi
Python tkinter vidjetlarining xodisalari bilan ishlash.
Ishdan maqsad: Tkinter button, canvas, checkbutton, label vidjetlari bilan amallar bajarishni o’rganish
Kerakli jihoz:Kompyuter, Python interpritatori
Topshiriqlar
1.Tkinter vidjetlari Button,Canvas, Labellar
2.Tugma yaratish
Ishning borishi
Nazariy qism
Vidjet parametrlari
Vidjetda tashqi ko'rinishi va xatti-harakatlarini sozlash imkonini beruvchi variantlar to'plami mavjud. Har bir vidjetning o'ziga xos imkoniyatlari mavjud. Odatda parametrlar konstruktor orqali o'rnatiladi. textMasalan, yuqoridagi misolda tugma tugmachadagi matnni o'rnatadigan parametrga o'rnatildi :
ttk.Button(text="Click")
Lekin siz vidjet oʻzgaruvchisi nomi va lugʻat sintaksisi yordamida konstruktordan tashqari parametrlarga ham kirishingiz mumkin:
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("METANIT.COM")
root.geometry("250x150")
btn = ttk.Button()
btn.pack()
btn["text"]="Send"
# получаем значение параметра text
btnText = btn["text"]
print(btnText)
root.mainloop()
Vidjet parametrlarini o'zgartirish uchun siz parametrlar va ularning qiymatlari uzatiladigan config() usulidan ham foydalanishingiz mumkin:
btn = ttk.Button()
btn.pack()
Vidjet haqida ma'lumot olish
Vidjet haqida ma'lumot olish uchun bir qancha vidjet atributlaridan foydalanishingiz mumkin. Keling, ulardan ba'zilarini ko'rib chiqaylik:
winfo_class : vidjet sinfini qaytaradi, masalan, tugma uchun bu sinfTButton
winfo_children : Joriy vidjet uchun bolalar vidjetlari roʻyxatini qaytaradi
winfo_parent : ota-ona vidjetini qaytaradi
winfo_toplevel : berilgan vidjetni o'z ichiga olgan oynani qaytaradi
winfo_width va winfo_height : vidjetning joriy kengligi va balandligi
winfo_reqwidth va winfo_reqheight : Vidjet talab qilingan kenglik va balandlik
winfo_x va winfo_y : vidjetning yuqori chap burchagidagi asosiy elementga nisbatan x va y koordinatalari
winfo_rootx va winfo_rooty : ekranga nisbatan vidjetning yuqori chap burchagidagi x va y koordinatalari
winfo_viewable: Vidjet ko'rsatilgan yoki yashirinligini bildiradi
Masalan, oynadagi barcha vidjetlar haqida ma'lumot olish uchun:btn.config(text="Send Email")
from tkinter import *
root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")
btn = Button(text="Hello")
btn.pack()
def print_info(widget, depth=0):
widget_class=widget.winfo_class()
widget_width = widget.winfo_width()
widget_height = widget.winfo_height()
widget_x = widget.winfo_x()
widget_y = widget.winfo_y()
print(" "*depth + f"{widget_class} width={widget_width} height={widget_height} x={widget_x} y={widget_y}")
for child in widget.winfo_children():
print_info(child, depth+1)
root.update()
print_info(root)
root.mainloop()
Funktsiya bu erda aniqlanadi print_info(), u parametr sifatida konsolda ko'rsatilishi kerak bo'lgan vidjetni va elementlarning vizual ierarxiyasidagi darajani (chuqurlik) oladi.
Vidjet uchun funktsiyaning o'zida biz sinf, kenglik, balandlik va X va Y koordinatalari haqidagi ma'lumotlarni ko'rsatamiz, shuningdek, har bir o'rnatilgan vidjet uchun bir xil funktsiyani rekursiv chaqiramiz.
Belgilangan o'lchamlar va pozitsiyalar qo'ng'iroq qilishdan oldin vidjetlarga qo'llanilishi uchun root.mainloop()biz usulni chaqiramizroot.update()
Bunday holda, vidjetlarning vizual ierarxiyasi unchalik chuqur emas - faqat ikkita element mavjud - oyna (Tk) va tugma (tugma), mos ravishda konsolning chiqishi quyidagicha bo'ladi:
Tk eni=250 balandligi=200 x=104 y=104
Tugma kengligi=39 balandligi=26 x=105 y=0
Bu vidjet, tkinterda buton yaratish uchun ishlatiladi.
|
| |