为什么将tkinter封装到类之后,tk.canvas使用不了
时间: 2024-01-16 14:02:48 浏览: 26
如果您将 tkinter 封装到类中后,发现 tk.Canvas 等窗口部件无法使用,可能是因为没有正确地传递父窗口(也就是 master 参数)。
在使用 tk.Canvas 创建画布时,需要指定它的父窗口。如果没有正确地指定父窗口,画布就无法显示。在类中创建画布时,需要将类的 `self` 参数作为父窗口传递给 tk.Canvas 的 master 参数。
以下是一个示例代码,展示了如何在类中使用 tk.Canvas:
```python
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.canvas = tk.Canvas(self, width=200, height=200)
self.canvas.pack()
self.canvas.create_line(0, 0, 200, 200)
root = tk.Tk()
app = Application(master=root)
app.mainloop()
```
在这个示例代码中,我们创建了一个名为 canvas 的 tk.Canvas 对象,并将它的 master 参数设置为 `self`,也就是类的实例。这样,就可以正确地将 canvas 添加到主窗口中,并且可以在画布上画一条线。