如何从类中访问变量和函数



我对OOP很陌生,但我能看到它的好处。我写了一个类(从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("jacob.kudria@gmail.com", "anon.vm45@gmail.com", "jacob.kudria", "2good4you!", body)
def main():
    root = Tk()
    main_window = mainWindow(root)
    root.mainloop()
if __name__ == '__main__':
    main()

首先,这段代码不起作用(发送部分),但这并不奇怪,我希望这个问题的答案将修复它。我的主要问题是:如何使send函数和email_entry变量(end函数使用该变量)从外部可访问?换句话说,我希望我的图形在类中,而其他的不在类中。基本上,我在类中声明了输入框变量,但是我想在类的之外为send函数使用它。随后,我希望能够从发送按钮的类的内部的访问发送函数。这是否涉及使它们全球化?

同样,这段代码可能不是最好的,我仍然不太擅长python。随着时间的推移,我会不断改进它。除了我的主要问题之外,还有什么关于代码的提示吗?

email_entry成为你的类的一个字段。

class mainWindow(Frame):
        # ...
    def initUI(self):
        # ...
        # note self here
        self.email_entry = Entry(self, exportselection = 0, width = 200).pack()
        # ...
    def send(self):
        # note self here
        body = self.email_entry.get()
        # ...

基本上,在你的代码email_entry只是一个局部变量的initUI函数(方法)。你希望它是你的实例的一个字段。

最简单的方法可能是将email_entry作为类中的一个字段。但是,您也可以从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()
    return email_entry

相关内容

  • 没有找到相关文章

最新更新