python-3.x - 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()
解决方案
推荐阅读
- scroll - 如何在拖动项目时向上或向下滚动页面,以便用户可以拖放到 Angular 7 cdk 拖放中不在当前视图中的项目上
- javascript - 根据 CSS 类名设置背景颜色
- python - 窗口小时按钮不可点击
- python - 线程的 is_alive 方法没有返回准确的状态
- google-chrome - 通过 chrome 重放 HTTP 请求以查看 html 响应
- java - 有没有办法阻止来自 Java JUnit 测试的所有外部网络访问?
- nginx - GKE 上的 nginx-ingress 无法路由到配置服务的路径
- ios - 如何使用 SwiftUI 2.0 生命周期从应用程序中的共享扩展响应文件?
- java - Springboot:用户'root'@'localhost'的访问被拒绝(使用密码:YES)
- azure - Timer Trigger Function App 缺少几次运行