【发布时间】:2020-10-15 21:33:57
【问题描述】:
我想将我在主窗口中的一些用户输入传输到顶层窗口。
到目前为止我有这个:
import tkinter as tk
from tkinter import filedialog
class Level1 :
def __init__(self, master):
## bunch of frames, labels and button instantiations
...........
self.info = filedialog.askopenfilename()
def get_info(self):
return self.info
def go_to_level2(self):
self.level_2 = tk.Toplevel(self.master)
self.app = Level2(self.level_2)
class Level2:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(......)
self.frame.pack()
self.label1 = tk.Label(self.frame, text = Level1.get_info)
self.label1.pack()
当我这样做时,它会打印内存的实例或位置,例如 ..Ox.... 有什么想法可以将信息传输到新窗口,还是应该在 level1 内实例化 level2?
编辑:显示未打印(如在 tk.Label 中)
Edit2:这是解决方案:
import tkinter as tk
from tkinter import filedialog
class Level1 :
def __init__(self, master):
## bunch of frames, labels and button instantiations
...........
self.info = filedialog.askopenfilename()
def get_info(self):
return self.info
def go_to_level2(self):
self.level_2 = tk.Toplevel(self.master)
self.app = Level2(self.level_2, self)
class Level2:
def __init__(self, master, level1):
self.master = master
self.frame = tk.Frame(......)
self.frame.pack()
self.label1 = tk.Label(self.frame, text = level1.get_info())
self.label1.pack()
【问题讨论】:
-
您发布的代码中没有
prints,因此无法说明为什么会得到您所做的输出。一般来说,您只需将其他参数传递给Level2的__init__()以使其能够访问它需要的Level1中的任何内容——这可能是Level1的self,或者更具体的东西。 -
我们如何传递另一个类的自我?不是每个班级都有自己的自己吗?并且只能访问自己的自己?
-
没有什么能阻止您将
self作为参数传递。如果Level2存储了该参数,也许是self.level1,那么它可以执行self.level1.get_info()之类的操作来调用其他类的方法。