我在 tkinter 中收到“canvas object has no attribute get_tk_widget”错误

I get 'canvas object has no attribute get_tk_widget' error in the tkinter

提问人:Hüseyin CENİK 提问时间:11/8/2023 更新时间:11/8/2023 访问量:51

问:

当我在thinkter库中运行以下代码时,我从get_tk_widget()中得到一个属性错误。我收到“canvas object has no attribute get_tk_widget”错误。我可以写什么来代替这段代码?


try:
        if canvas:
            canvas.get_tk_widget().grid_forget()
        canvas = FigureCanvasTkAgg(fig, master=root)
        canvas_widget = canvas.get_tk_widget()
        canvas_widget.grid(row=8, columnspan=4, sticky="nsew")
        scrollbar = tk.Scrollbar(root, orient="horizontal", command=canvas_widget.get_tk_widget().xview)
        scrollbar.grid(row=9, columnspan=4, sticky="ew")
        canvas_widget.get_tk_widget().configure(xscrollcommand=scrollbar.set)

canvas_widget.get_tk_widget().bind('<Configure>', on_canvas_configure)

Gui 屏幕打开,但此处的get_tk_widget给出了 attirbute 错误。

matplotlib tkinter 语法错误

评论


答:

2赞 acw1668 11/8/2023 #1

canvas_widget是 widget 的一个实例,所以它没有功能。tkinter.Canvasget_tk_widget()

您需要将它们更改为:canvas_widget.get_tk_widget()canvas_widget

...
scrollbar = tk.Scrollbar(root, orient="horizontal", command=canvas_widget.xview)
scrollbar.grid(row=9, columnspan=4, sticky="ew")
canvas_widget.configure(xscrollcommand=scrollbar.set)
...
canvas_widget.bind("<Configure>", on_canvas_configure)

评论

0赞 Hüseyin CENİK 11/10/2023
当我按照你说的去做时,我看不到 gui 屏幕上的图形。黑屏来了
0赞 acw1668 11/10/2023
@HüseyinCENİK 我们怎么知道为什么你只用几行提供的代码就得到一个空白屏幕?最好提供一个最小的可重现示例