0
0 комментариев

Это мой код:

from tkinter import * #импортируем все из ткинтера(если написать import tkinter, тогда придется адресоваться к каждому элементу пакета через tkinter.блабла)
 
root = Tk() #создание главного окна
 
class Buttoner(Button):                                                              #создаем класс Buttoner с наследованием всего от класса Button из пакета tkinter`а
    def print_sym(self):                                                             #определяем функцию печати определенного символа для определенной кнопки
        operation_display["text"] = self.sym                                         #графе "text" в объекте "operation_display" (что это такое - на 17 строчке) присваиваем значения символа, который будет определен при создании объекта класса Buttoner
    def __init__(self, master=None, text = "Click Me!!!", sym_to_print = "Blah"):    #определяем что будет происходить при инициализации объекта класса Buttoner(по умолчанию: родительский виджет не указан, текст кнопки - Нажми на меня, символ для вывода в "operation_display" - бла)
        Button.__init__(self, master)                                                #инициализируем родительский класс
        self.sym = sym_to_print                                                      #задаем личный символ обйекта как символ указаный при инициализации
        self["text"] = text                                                          #надпись на кнопке как указаную при инициализации
        self["command"] = self.print_sym                                             #и функцию исполняемую при нажатии на кнопку как печать личного символа
        self.pack({"side":"right"})                                                  #выдаем спараметризированную кнопку на экран, а именно в левую его часть
 
operation_display = Label(master = root, text = "", relief = "sunken")               #создаем объект класса Label(надпись) с параметрами род. виджета, текста надписи и рамки надписи
quit_b = Button(master = root, text = "Quit?", fg = "red", command = quit).pack({"side":"right"})    #создаем объект родного класса Button с параметрами род. виджета, текста на кнопке, цвета шрифта и функции исполняемой при нажатии на данную кнопку. Сразу после выдаем то, что получили на экран
plus_b = Buttoner(master = root, sym_to_print = "+", text = "+")     #создаем объект нашего класса Buttoner с параметрами символа для печати в operation_display и текста на кнопке
minus_b = Buttoner(master = root, sym_to_print = "-", text = "-")    #все тоже что и выше
one_b = Buttoner(master = root, sym_to_print = "1", text = "1")      #и это
operation_display.pack({"ipadx":"50"})                               #при выдаче operation_display на экран растягиваем его по иксу на 50
mainloop()                                                           #запускаем главный цикл
root.destroy()                                                       #после выхода из главного цикла окно разрушается

Этот код создает небольшое окно с кнопками и графой текста, в которую, в свою очередь, передается символ нажатой кнопки. Странно то, что я могу изменять объект одного класса методом другого класса без использования указателей.


Добавить комментарий