Pythonda matnni kirildan lotinga va lotindan
kiril alifbosiga o'tkazuvchi dastur yaratish.
Kirish.
Idora va ofislarda ishlovchi hodimlar yoki boshqa shunga o'xshash soha egalari kompyuterda matnni kirildan
lotinga va aksincha o'tkazishiga to'g'ri keladi. Har xil dasturlash tillari yordamida ko'plab kiril-lotin dasturlari
yaratilgan. Bu maqolada python dasturlash tilida shu dasturni yaratishni o'rganamiz.
Dastur oynasi.
Ishni modullarni bog'lash va dastur oynasini yaratishdan boshlaymiz.
from tkinter import *# tkinter moduuliga bog'laymiz
from tkinter.filedialog import *
oyna=Tk() #Oyna yaratib olamiz.
oyna.title("Kiril-Lot dasturi")#dastur sarlavhasi;
oyna.geometry("860x400")#oyna o'lchamlari;
oyna.configure(bg="dodger blue")#fon rangi.
Dasturda matn yozish va tahrirlash uchun bitta Text vidjetini joylashtirib olamiz. Dastur oynasiga matn joylashtirish
uchun Label dan foydalanamiz.
Label(oyna, text="Matnni kirildan lotinga va lotindan kirilga o'tkazishingiz
mumkin.",bg="dodger blue").place(x=20, y=10)#Label vidjeti;
scrollbar = Scrollbar(oyna)#Scrollbar vidjeti;
scrollbar.pack(side=RIGHT, fill=Y)
matn=Text(oyna, height=20, width=100)#Text vidjetini yaratish.
matn.place(x=20, y=30)
matn.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=matn.yview)
Text vidjetiga ko'p qatorli matn yozilganda uning maydonga sig'magan qismlarini ko'rish uchun
Scrollbar vidjetini
joylashtirdik. Harflarni saqlash uchun kiril va lot listlarini yaratib olamiz. Bu listlar yordamida matndagi harflar bir-biri
bilan almashtiriladi.
Matndagi harflarni almashtirish uchun 2ta funksiya yaratib olamiz.
#Kirildan lotinga o'tkazish funksiyasi.
def lotinga():
s=matn.get(1.0,END)
for i in range(len(kiril)):#list uzunligiga mos sikl yaratamiz
s=s.replace(kiril[i],lot[i])#replace orqali matnni almashtirib chiqaramiz
matn.delete(1.0,END)#oldingi matnni o'chirib tashlaymiz
matn.insert(END,s)#yangi matnni joylashtiramiz
#Lotindan kirilga o'tkazish funksiyasi.
def kirilga():
s=matn.get(1.0,END)
for i in range(len(kiril)):
s=s.replace(lot[i],kiril[i])
matn.delete(1.0,END)
matn.insert(END,s)
Matnni boshqa alifbo harflariga o'tkazish uchun replace() almashtirish funksiyasidan foydalanamiz. Barcha harflar
almashishi uchun for sikliga joylashtiriladi. len(kiril)-orqali takrorlanishlar soni harflar soni bo'yicha aniqlanadi.
Dasturimizga matnni saqlash va fayldan ochish imkoniyatini ham qo'shamiz.
def ochish():#fayldan ochish funksiyasini yaratamiz
fayl=askopenfilename(filetypes=[("Matn fayli","*.txt"),("Barcha
fayllar","*.*")])#ochish dialog oynasini hosil qilamiz
if not fayl:
return
matn.delete(1.0,END)
with open(fayl,"r") as faylga:#fayl o'zgaruvchisi orqali fayllga bog'laymiz
mtn=faylga.read()#fayldan matnni o'qish olish
matn.insert(END,mtn)#fayldagi ma'lumotni Text vidjetiga yozamiz
#Matnni xotiraga saqlash.
def saqlash():#faylga saqlash funksiyasini yaratamiz
fayl=asksaveasfilename(defaultextension="txt",filetypes=[("Matn
fayli","*.txt"),("Barcha fayllar","*.*")],)#saqlash dialog oynasini hosil qilamiz
if not fayl:
return
with open(fayl,"w",encoding="utf-8") as fayldan:#faylni ochamiz
mtn=matn.get(1.0,END)
fayldan.write(mtn)#faylga ma'lumot yoziladi
Button vidjeti yordamida 4ta boshqarish tugmalarini joylashtiramiz.
Button(oyna, text="Fayldan ochish", command=ochish).place(x=40, y=360)
Button(oyna, text="Faylga saqlash", command=saqlash).place(x=150, y=360)
Button(oyna, text="Kirildan lotinga o'tkazish", command=lotinga).place(x=290, y=360)
Button(oyna, text="Lotindan kirilga o'tkazish", command=kirilga).place(x=450, y=360)
va oyna.mainloop()-dastur oynasini ekranga chiqaramiz.
Dasturimiz tayyor. Dasturning to'liq kodi:
from tkinter import *#tkinter modulini bog'lab olamiz
from tkinter.filedialog import *
oyna=Tk() #Oyna yaratib olamiz.
oyna.title("Kiril-Lot dasturi")#Oyna sarlavhasi
oyna.geometry("860x400")#Oyna o'lchamlari
oyna.configure(bg="dodger blue")#dastur fon rangi
Label(oyna, text="Matnni kirildan lotinga va lotindan kirilga o'tkazishingiz
mumkin.",bg="dodger blue").place(x=20, y=10)#label yordamida oynada matn chiqaramiz
scrollbar = Scrollbar(oyna)#ko'p qatorli matnni ko'rish uchun scrollbar
joylashtiramiz
scrollbar.pack(side=RIGHT, fill=Y)
matn=Text(oyna, height=20, width=100)#matn kiritish va tahrirlash maydoni hosil
qilamiz
matn.place(x=20, y=30)#matn maydoni kordinatalari
matn.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=matn.yview)
#Kiril harflar listini yaratib olamiz.
kiril=["ю","Ю","я","Я","ё","Ё","ш","Ш","ч","Ч","ў","Ў",
"қ","Қ","ғ","Ғ","ц","Ц","й","Й","у","У","к","К",
"е","Е","н","Н","г","Г","щ","Щ","з","З","х","Х",
"э","Э","ж","Ж","д","Д","л","Л","о","О","р","Р",
"п","П","а","А","в","В","ф","Ф","с","С","м","М",
"и","И","т","Т","б","Б","қ","Қ","ҳ","Ҳ","ғ","Ғ","ь"]
#Lotin harflar listini yaratib olamiz.
lot=["yu","Yu","ya","Ya","yo","Yo","sh","Sh","ch","Ch","o'","O'",
"q","Q","g'","G'","ts","Ts","y","Y","u","U","k","K","e","E",
"n","N","g","G","sh","Sh","z","Z","x","X","e","E","j","J",
"d","D","l","L","o","O","r","R","p","P","a","A","v","V","f",
"F","s","S","m","M","i","I","t","T","b","B","q","Q","h","H",
"g'","G'","`"]
#Kirildan lotinga o'tkazish funksiyasi.
def lotinga():
s=matn.get(1.0,END)
for i in range(len(kiril)):#list uzunligiga mos sikl yaratamiz
s=s.replace(kiril[i],lot[i])#replace orqali matnni almashtirib chiqaramiz
matn.delete(1.0,END)#oldingi matnni o'chirib tashlaymiz
matn.insert(END,s)#yangi matnni joylashtiramiz
#Lotindan kirilga o'tkazish funksiyasi.
def kirilga():
s=matn.get(1.0,END)
for i in range(len(kiril)):
s=s.replace(lot[i],kiril[i])
matn.delete(1.0,END)
matn.insert(END,s)
#Xotiradan matn faylini ochish.
def ochish():#fayldan ochish funksiyasini yaratamiz
fayl=askopenfilename(filetypes=[("Matn fayli","*.txt"),("Barcha
fayllar","*.*")])#ochish dialog oynasini hosil qilamiz
if not fayl:
return
matn.delete(1.0,END)
with open(fayl,"r") as faylga:#fayl o'zgaruvchisi orqali fayllga bog'laymiz
mtn=faylga.read()#fayldan matnni o'qish olish
matn.insert(END,mtn)#fayldagi ma'lumotni Text vidjetiga yozamiz
#Matnni xotiraga saqlash.
def saqlash():#faylga saqlash funksiyasini yaratamiz
fayl=asksaveasfilename(defaultextension="txt",filetypes=[("Matn
fayli","*.txt"),("Barcha fayllar","*.*")],)#saqlash dialog oynasini hosil qilamiz
if not fayl:
return
with open(fayl,"w",encoding="utf-8") as fayldan:#faylni ochamiz
mtn=matn.get(1.0,END)
fayldan.write(mtn)#faylga ma'lumot yoziladi
#Boshqarish uchun tugmalar joylashtiramiz.
Button(oyna, text="Fayldan ochish", command=ochish).place(x=40, y=360)#ochish
tugmasi place-kordinatalari
Button(oyna, text="Faylga saqlash", command=saqlash).place(x=150, y=360)
Button(oyna, text="Kirildan lotinga o'tkazish", command=lotinga).place(x=290, y=360)
Button(oyna, text="Lotindan kirilga o'tkazish", command=kirilga).place(x=450, y=360)
oyna.mainloop()#yaratgan forma oynamiz namoish etiladi