7
Дегенмен, егер код осылай көрінсе, онда кластың қажеті жоқ. Егер бізге бірнеше немесе
көптеген ұқсас блок объектілері қажет болса, онда оның мағынасы пайда болады.
Бізге
белгіден, батырмадан, өрістен тұратын бірнеше блоктар қажет делік.
Сонымен қатар, әр
топтың батырмасында шертпенің өзіндік өңдеу
функциясы болады.
Сонда 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) өрнегі.
Бұл кодты орындау кезінде терезеде біртипті екі блок пайда болады,
олардың
батырмалары әртүрлі әрекеттерді орындайды.
8
Егер сіз виджеттердің қасиеттерін қатаң орнатпасаңыз, бірақ мәндерді конструкторға
аргумент ретінде берсеңіз, содан кейін объектілерді құру кезінде оларды тиісті опцияларға
тағайындасаңыз, класты икемді етуге болады.
Достарыңызбен бөлісу: