【发布时间】:2016-01-12 12:50:09
【问题描述】:
我目前正在构建一个基于用户的系统,其中我在 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”传递给类菜单,以便它可以显示在标签中?我试图不使用全局变量。非常感谢。
【问题讨论】:
-
Menu(self.menu, self.name)...!? -
请注意,您正在屏蔽 tkinter 自己的
Menu类。 -
您是否更改了
Menu.__init__的方法签名以匹配它? -
这么说吧:您已经将
self.menu从Login传递到Menu... 使用完全相同的技术传递附加值有什么问题?! -
当您说“将课程分配到新窗口”时,您到底指的是什么?!
Menu(self.menu)没有“将类分配给新窗口”;它实例化类并将变量(self.menu) 传递给它的__init__方法。 – 也许阅读更多有关Python OOP 基础知识的内容?
标签: python class variables parameters tkinter