Tkinter Python-д а gui бағдарламалау



Pdf көрінісі
бет3/16
Дата04.10.2024
өлшемі1,32 Mb.
#146854
1   2   3   4   5   6   7   8   9   ...   16
Байланысты:
Tkinter. Python-да GUI бағдарламалау

Block 
класынан пайда болатын бір объект болсын. Сонда бағдарламаның негізгі тармағында 
негізгі терезе, 
Block 
түріндегі объект және терезені іске қосу болады. Блок негізгі терезеге 
қосылуы керек болғандықтан, бастапқы терезені класс конструкторына жіберу тиімді.
from tkinter import * 
root = Tk() 
first_block = Block(root) 
root.mainloop() 
Енді Block класын жазайық: 
class Block: 
def __init__(self, master): 
self.ent = Entry(master, width=20) 
self.but = Button(master, 
text="Преобразовать") 
self.lab = Label(master, width=20, 
bg='black', fg='white') 
self.but['command'] = self.str_to_sort 
self.ent.pack() 
self.but.pack() 
self.lab.pack() 
def str_to_sort(self): 
s = self.ent.get() 
s = s.split() 
s.sort() 
self.lab['text'] = ' '.join(s) 
Мұнда виджеттер 
Block
түріндегі объект өрістерінің мәндері болып табылады
батырманы басу оқиғасын өңдеу функциясы 
bind
әдісінің көмегімен емес
command
қасиетін пайдаланып орнатылады. Бұл жағдайда шақырылатын функцияда 
event 
параметрі 
қажет емес. Біз әдіске объектінің өзін ғана береміз. 



Дегенмен, егер код осылай көрінсе, онда кластың қажеті жоқ. Егер бізге бірнеше немесе 
көптеген ұқсас блок объектілері қажет болса, онда оның мағынасы пайда болады. Бізге 
белгіден, батырмадан, өрістен тұратын бірнеше блоктар қажет делік. Сонымен қатар, әр 
топтың батырмасында шертпенің өзіндік өңдеу функциясы болады
Сонда command қасиеті үшін мәндерді конструкторға жіберуге болады. Мән оқиғаның 
өңдеу функциясымен байланысады. Бағдарламаның толық коды: 
from tkinter import * 
class Block: 
def __init__(self, master, func): 
self.ent = Entry(master, width=20) 
self.but = Button(master, text="Преобразовать") 
self.lab = Label(master, width=20, bg='black', fg='white') 
self.but['command'] = getattr(self, func) 
self.ent.pack() 
self.but.pack() 
self.lab.pack() 
def str_to_sort(self): 
s = self.ent.get() 
s = s.split() 
s.sort() 
self.lab['text'] = ' '.join(s) 
def str_reverse(self): 
s = self.ent.get() 
s = s.split() 
s.reverse() 
self.lab['text'] = ' '.join(s) 
root = Tk() 
first_block = Block(root, 'str_to_sort') 
second_block = Block(root, 'str_reverse') 
root.mainloop() 
Func орнына 'str_to_sort' немесе 'str_reverse' жолы ауыстырылатын self.str_to_sort 
немесе self.str_reverse өрнегіне түрлендірілетін getattr(self, func) өрнегі. 
Бұл кодты орындау кезінде терезеде біртипті екі блок пайда болады, олардың 
батырмалары әртүрлі әрекеттерді орындайды. 



Егер сіз виджеттердің қасиеттерін қатаң орнатпасаңыз, бірақ мәндерді конструкторға 
аргумент ретінде берсеңіз, содан кейін объектілерді құру кезінде оларды тиісті опцияларға 
тағайындасаңыз, класты икемді етуге болады. 


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   16




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет