Я новичок в ООП, но я вижу его преимущества. Я написал класс (структурированный на примере из zetcode), который создает окно и помещает в него поле ввода и кнопку. Кроме того, у меня есть функция, которая отправляет электронное письмо (мой фактический код отправки поступает из модуля sendEmail, который я сделал). Код:Как получить доступ к переменным и функциям из класса?
import sendEmail
from tkinter import *
class mainWindow(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, bg = "#C2C2D6")
self.parent = parent
self.initUI()
def initUI(self):
self.parent.wm_title("Email")
self.parent.config(height = 370, width = 670)
email_entry = Entry(self, exportselection = 0, width = 200).pack()
send_button = Button(self, text = "Send", command = self.send).pack()
self.pack()
def send(self):
body = email_entry.get()
sendEmail.sendEmail("[email protected]", "[email protected]", "jacob.kudria", "2good4you!", body)
def main():
root = Tk()
main_window = mainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()
Прежде всего, этот код не работает (отправляющая часть), но это не удивительно, я надеюсь, что ответ на этот вопрос будет исправить. Мой главный вопрос: как я могу сделать функцию отправки, и поэтому переменная email_entry (конечная функция использует эту переменную), доступную извне? Другими словами, я хочу, чтобы моя графика была в классе, а остальное - нет. В принципе, я объявляю переменную поля ввода в классе, но я хочу использовать ее за пределами класса для функции отправки. Впоследствии я хочу иметь доступ к функции отправки от внутри класса для кнопки отправки. Это связано с тем, что они глобальны ...?
Кроме того, этот код, вероятно, далеко не самый лучший, я все еще не очень хорош с python. Я буду улучшать его, когда я иду. Какие-нибудь советы по коду, помимо моего основного вопроса?
Что вы подразумеваете под «полем»? А также, что все еще оставляет функцию отправки внутри класса. Было бы неплохо иметь его снаружи, чтобы разделить пользовательский интерфейс и фактические действия ... Или это не очень хорошая идея ...? –
@JacobKudria 'main_window' является _instance_ вашего класса. Данные, «прикрепленные» к нему, называются _fields_. Я думаю, вам будет полезно начать с какой-то базовой статьи об ООП (почти eny будет работать). И вам нужно будет узнать об основных вещах, таких как _classes_, _objects_ (_instances_), _methods_, _fields_. Это самые основные вещи в ООП, и вам нужно их понять. – kirelagin
Как ни странно, я понимаю все эти вещи, кроме полей ... –