首页 > 解决方案 > tkinter 从一个单独的类中调用祖父母实例变量时出错

问题描述

如何从“class Day”访问实例变量“self.data = 42”?

这是我较大的 GUI 程序的最简单形式,所以请忽略弹出的窗口。我正在研究它的数据逻辑,我不知道如何访问这个变量。

我需要的是能够打印( f"from class Day {self.parent.data}"),错误显示“AttributeError: 'Week' object has no attribute 'data'”,这是合乎逻辑的,因为“class Day”是“class Week”的组成部分(这是专为我的GUI设置的“有”关系)。

我曾尝试创建另一个实例“self.day1 = Day(self)”,但没有成功。我也试过“class Day(tk.Frame, Application):”看看我是否可以继承数据,但仍然有同样的错误。

如果有人可以帮助我完成这项工作,这将使我更好地理解 super()/composition。

再次感谢你的帮助。

import tkinter as tk
from tkinter import ttk


class Application(tk.Tk):
    def __init__(self):
        super().__init__()

        self.data = 42

        self.week1 = Week(self)


class Week(tk.Frame):
    def __init__(self, parent):
        super().__init__(parent)
        self.parent = parent

        self.day1 = Day(self)

        print ( f"from class Week {self.parent.data}")

class Day(tk.Frame):
    def __init__(self, parent):
        super().__init__(parent)
        self.parent = parent

#        print ( f"from class Day {self.parent.data}")

if __name__ == '__main__':
    Application().mainloop()

标签: python-3.xtkinterparent-childinstance-variablessuper

解决方案


推荐阅读