Расширение и прикрепление Python

rasshirenie i prikreplenie python Текст и язык

Клиенты, использующие реализацию этого калькулятора, получаются такие же простые, как сам калькулятор. Как и большинство графических интерфейсов на основе классов из библиотеки tkinter, данный интерфейс может быть расширен в подклассах — класс в примере 19.18 переопределяет конструктор простого калькулятора для вставки новых графических элементов.

Пример 19.18. PP4E\Lang\Calculator\calc0ext.py

from tkinter import *

from calc0 import CalcGui

class Inner(CalcGui): # расширенный графический интерфейс

def __init__(self):

CalcGui.__init__(self)

Label(self, text=’Calc Subclass’).pack() # добавить после

Button(self, text=’Quit’, command=self.quit).pack() # подразумевается # позиция top

Inner().mainloop()

Возможно встраивание калькулятора в класс контейнера — в примере 19.19 к общему родителю прикрепляются пакет виджетов простого калькулятора и дополнительные элементы.

Пример 19.19. PP4E\Lang\Calculator\calc0emb.py

from tkinter import *

from calc0 import CalcGui # добавить родителя, без вызовов владельца

class Outer:

def __init__(self, parent): # встроить интерфейс

Label(parent, text=’Calc Attachment’).pack() # side=top CalcGui(parent) # добавить фрейм калькулятора

Button(parent, text=’Quit’, command=parent.quit).pack()

root = Tk()

Outer(root)

root.mainloop()

На рис. 19.3 показан результат запуска обоих сценариев, представленных выше, из различных командных строк. Оба имеют отдельное поле ввода вверху. Все работает, но чтобы увидеть более практическое применение такой техники повторного использования, нужно также сделать более реальным лежащий в основе калькулятор.


Рис. 19.3. Объект из сценария calc0, прикрепленный и расширенный

 

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий