10.Python dasturlash tilining Tkinter moduli bilan ishlash
Tkinter - bu Python kutubxonasi bo'lib unda Tk kutubxonasidan foydalaniladi.. Tk kutubxonasida Tcl dasturlash tilida yozilgan grafik foydalanuvchi interfeysi (GUI) komponentlari mavjud.
Grafik interfeys (GUI) - bu dasturni ochishda ekranda ko'riladigan barcha oynalar, tugmachalar, matn maydonlari, skrollerlar, ro'yxatlar, radio tugmalari, tasdiqlash knopkalari va boshqalarni yaratish mumkin . Ular orqali siz dastur bilan o'zaro aloqada bo'lib, uni boshqarasiz. Ushbu barcha interfeys elementlari vidjet deb nomlanadi.
Ko'pgina GUI kutubxonalari mavjud, ulardan Tk eng ommabopi emas , garchi undan foydalanib juda ko'p loyihalar yozilgan. Bu Python uchun avtomatik ichiga joylashtirilgan kutubxona .
Voqealarga asoslangan GUI dasturlari. Siz allaqachon tuzilgan va afzalroq ob'ektga yo'naltirilgan dasturlarni yaxshi bilishingiz kerak. Hodisalarga asoslangan voqealar yo'naltirilgan. Ya'ni, dastur kodining u yoki bu qismi u yoki bu voqea sodir bo'lgandagina bajarilishini boshlaydi
Voqealarga yo'naltirilgan dasturlash ob'ektga yo'naltirilgan va tuzilgan. Agar biz o'z sinflarimizni va ob'ektlarimizni yaratmasak ham, ulardan foydalanamiz. Barcha vidjetlar - bu o'rnatilgan sinflar tomonidan yaratilgan ob'ektlardir.
Dasturlar doim xar xil tuzilishga ega bo'ladi. Masalan , kimdir sichqonchani bosdi yoki Enter tugmachasini bosdi, matn kiritishni boshladi, radio tugmachalarini almashtirdi, class larni ishgaa tushirai va hokazo. Bunday voqea sodir bo'lganda, tegishli ishlov beruvchi dastur yaratilsa, dasturning ma'lum qismi ishga tushiriladi va bu qandaydir natijaga olib keladi.
Tkinter Python moduli uchun standart sifatida quyidagi usullardan biri bilan import qilinadi:
import tkinter
from tkinter import *
import tkinter as tk
Aloxida sinflarni import qilish mumkin, bu kamdan-kam hollarda amalga oshiriladi. Ushbu kursda biz from tkinter import * dan foydalanamiz.
Bundan tashqari, GUI dasturini yozish uchun quyidagilarni bajarishingiz kerak:
1.Asosiy oynani yarating.
2.Vidjetlarni yarating va ularning xususiyatlarini (variantlarini) sozlang.
3.Hodisalarni aniqlang, ya'ni dastur nimaga javob beradi.
4.Voqealar ishlovchilarini, ya'ni dastur qanday munosabatda bo'lishini tasvirlab bering.
5.Vidjetlarni asosiy oynada joylashtiring.
6.Hodisa tsiklini tuzing
Zamonaviy operatsion tizimlarda har qanday foydalanuvchi ilovasi asosiy oyna deb atash mumkin bo'lgan oynaga kiritilgan, chunki boshqa barcha vidjetlar unda joylashgan. Yuqori darajadagi oyna ob'ekti tkinter modulining Tk sinfidan yaratiladi. Ob'ekt bilan bog'liq bo'lgan o'zgaruvchini ko'pincha root deyiladi:
root = Tk()
from tkinter import *
root = Tk() #root
root['bg'] ='#fafafa' #fon rangi
root.title = "MALUMOT" #Oyna momi
root.wm_attributes('-alpha',0.8) #oyna yorugliligi
root.geometry = ('400 x 400') #oyna o'lchami
root.resizable(width = True, height = True) #oynani kattalashtirish yoki
# kichiklashtirishni o'chirib ko'yamiz
root.mainloop()
Kalkulyator dasturi
from tkinter import *
from decimal import *
root = Tk()
root.title('Kalkulyator')
buttons = (('7', '8', '9', '/', '4'),
('4', '5', '6', '*', '4'),
('1', '2', '3', '-', '4'),
('0', '.', '=', '+', '4')
)
activeStr = ''
stack = []
def calculate():
global stack
global label
result = 0
operand2 = Decimal(stack.pop())
operation = stack.pop()
operand1 = Decimal(stack.pop())
if operation == '+':
result = operand1 + operand2
if operation == '-':
result = operand1 - operand2
if operation == '/':
result = operand1 / operand2
if operation == '*':
result = operand1 * operand2
label.configure(text=str(result))
def click(text):
global activeStr
global stack
if text == 'CE':
stack.clear()
activeStr = ''
label.configure(text='0')
elif '0' <= text <= '9':
activeStr += text
label.configure(text=activeStr)
elif text == '.':
if activeStr.find('.') == -1:
activeStr += text
label.configure(text=activeStr)
else:
if len(stack) >= 2:
stack.append(label['text'])
calculate()
stack.clear()
stack.append(label['text'])
activeStr = ''
if text != '=':
stack.append(text)
else:
if text != '=':
stack.append(label['text'])
stack.append(text)
activeStr = ''
label.configure(text='0')
label = Label(root, text='0', width=75)
label.grid(row=0, column=0, columnspan=4, sticky="nsew")
button = Button(root, text='CE', command=lambda text='CE': click(text))
button.grid(row=1, column=3, sticky="nsew")
for row in range(4):
for col in range(4):
button = Button(root, text=buttons[row][col],
command=lambda row=row, col=col: click(buttons[row][col]))
button.grid(row=row + 2, column=col, sticky="nsew")
root.grid_rowconfigure(6, weight=1)
root.grid_columnconfigure(4, weight=1)
root.mainloop()
Do'stlaringiz bilan baham: |