什么是在Python中的类之间传递参数的最有效方法?

时间:2016-01-12 12:50:09

标签: python class variables parameters tkinter

我目前正在构建一个基于用户的系统,我在pythons tkinter中有一个登录屏幕的类。一旦用户信息正确,它将启动菜单的类。我正在使用python读取和检查用户信息的SQL数据库。我将需要将用户的用户名传递给菜单类,以便类知道要在该菜单上显示的信息。

from tkinter import *

class Login:

    def __init__(self, master):
        self.master = master

        self.label = Label(self.master, text = "enter name")
        self.entry = Entry(self.master)
        self.button = Button(self.master, text = "submit", command = self.loadMenu)

        self.label.grid(row = 0, column = 0)
        self.entry.grid(row = 0, column = 1)
        self.button.grid(row = 1, column = 0, columnspan = 2)

        self.name = self.entry.get()

    def loadMenu(self):
        self.menu = Toplevel(self.master)
        self.app = Menu(self.menu)


class Menu:

    def __init__(self, master):
        self.master = master

        self.label = Label(self.master, text = "dave")

        self.label.grid(row = 0, column = 0)


def main():
    root = Tk()
    run = Login(root)
    root.mainloop()

if __name__ == '__main__':
    main()

在上面的示例代码中,可以使用什么方法来传递变量' self.name'到类菜单,以便它可以显示在标签中?我试图不使用全局变量。非常感谢。

1 个答案:

答案 0 :(得分:0)

您的班级菜单需要一种方法来设置名称。 e.g:

class myMenu:
    def __init__(self,...):
        ....

    def set_Me(self,some_name):
        self.some_name = some_name
        # or
        self.label.setName(some_name)

在您打电话的主程序中:

self.app.set_Me(self.name)

以上是伪代码。但你应该明白这个想法。 您可以使用此技术随时将变量传递给任何类。

如果只需要传递变量一次:

class my_class:
    def __init__(self,my_variable):
        self.my_variable = my_variable