在 Python 中为我的 class 获取 NameError

Getting a NameError for my class in Python

我的问题是关于 GUI 的。我正在尝试创建一个程序,该程序使用 GUI 发送简单的电子邮件,用户可以在其中输入他们的电子邮件、密码和收件人电子邮件。我已将 GUI 和逻辑编码在一个文件中,按功能分隔,并且它们都在同一个 class 中。这是个好主意吗?

无论如何,继续前进。我想将 "Send" 命令设置为我在 class 中创建的 "send_email" 方法,但它说它尚未声明。我的代码(为此目的删除了所有不相关的东西)如下:

class Application(Frame):

    init, other widget creation\packing stuffs

    def create_widgets(self):
        widget creation methods...

        #For the send button
        self.send = Button(self.framepack, text="Send", width=10, command=send_email)
        self.send.pack(padx=5, pady=5)

    def send_email(self):
    email sending code...

不幸的是,像这样的设置会引发 NameError,其中 send_email(self) 函数尚未定义。我可以让我的代码工作的唯一其他方法是当我使用发送按钮的配置方法来添加命令时,如下所示:

root = Tk()
app = Application(root)
app.send.config(command=app.send_email)

我的程序结构不好吗?你会怎么做?您会简单地按程序编写并跳过整个 OOP 方法吗? (以这种方式在 creating\referring 时为变量节省了很多重复的 "self" 提及)。

这可能是您想要的:

self.send = Button(self.framepack, text="Send", width=10, command=self.send_email)