在使用tk窗口后,在一个对象内引用另一个对象的方法
时间: 2024-03-01 20:51:03 浏览: 21
在一个 Tkinter 对象内引用另一个对象的方法,可以使用对象的实例变量。假设我们有两个对象 `obj1` 和 `obj2`,并且我们想在 `obj1` 的方法中调用 `obj2` 的方法,那么我们可以通过以下方式实现:
```python
import tkinter as tk
class Obj1:
def __init__(self, master):
self.master = master
self.button = tk.Button(self.master, text="Click me!", command=self.obj2_method)
self.button.pack()
def obj2_method(self):
self.master.obj2.obj2_method()
class Obj2:
def __init__(self, master):
self.master = master
def obj2_method(self):
print("This is Obj2's method.")
root = tk.Tk()
obj2 = Obj2(root)
obj1 = Obj1(root)
root.obj2 = obj2
root.mainloop()
```
在上面的代码中,`Obj1` 和 `Obj2` 都是自定义对象,它们都接受一个 `master` 参数,表示它们所属的 Tkinter 窗口。在 `Obj1` 的构造函数中,我们创建了一个按钮,并将其 `command` 属性设置为 `self.obj2_method`。这意味着当用户单击按钮时,将调用 `Obj1` 实例的 `obj2_method` 方法。
在 `obj2_method` 中,我们使用 `self.master` 引用了当前对象所属的窗口,然后通过 `self.master.obj2` 引用了另一个对象 `obj2`,并调用了它的 `obj2_method` 方法。
为了在 `Obj1` 实例中能够访问 `obj2` 对象,我们在 `root` 窗口对象上创建了一个名为 `obj2` 的属性,并将其设置为 `obj2` 对象的实例。这样,我们就可以在 `Obj1` 实例中通过 `self.master.obj2` 引用 `obj2` 对象。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)