__init__ в графическом интерфейсе с помощью tkinterPython

Программы на Python
Anonymous
__init__ в графическом интерфейсе с помощью tkinter

Сообщение Anonymous »

Я учусь создавать простые графические интерфейсы на Python с использованием Tkinter. В настоящее время я использую документацию Python в качестве ссылки (ссылка).

Первое, что я пытаюсь сделать, это понять пример кода. В частности, я рассматриваю этот фрагмент кода, который создает диалоговое окно с двумя кнопками: одна для печати чего-либо на консоли, а другая для закрытия программы:

Код: Выделить всё

from Tkinter import *

class Application(Frame):
def say_hi(self):
print "hi there, everyone!"

def createWidgets(self):
self.QUIT = Button(self)
self.QUIT["text"] = "QUIT"
self.QUIT["fg"]   = "red"
self.QUIT["command"] =  self.quit

self.QUIT.pack({"side": "left"})

self.hi_there = Button(self)
self.hi_there["text"] = "Hello",
self.hi_there["command"] = self.say_hi

self.hi_there.pack({"side": "left"})

def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()

root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()
Я понимаю, что функция createWidgets размещает все элементы на экране (который каким-то образом создается с помощью инструкции def init), но я не понимаю, почему главный экран создается с использованием этого имени init. Я думал, что это соглашение, но когда я изменил «init» на «main», кнопки не были размещены на экране, поэтому я не знаю, нужно ли всегда создавать главный экран с этим именем, или это я сделал там что-то не так.

Я также не понимаю, почему каждая функция создается с использованием (self) (что это значит?) или почему .mainloop вызывается в конце (я полагаю, для запуска всей программы), когда я не вижу никакого основного цикла, определенного где-либо в примере кода.

У меня есть базовое понимание того, как работают объекты, но я нахожу Python немного запутанным, когда имею дело с такими вещами. Я просмотрел документацию Python по этому вопросу, но она кажется мне немного расплывчатой.

Любая ссылка на более конкретную документацию (что-то менее расплывчатое, чем та, которую я использую по Python) будет очень признательна.

Вернуться в «Python»