AttributeError:“_tkinter。对象没有属性TclError-问答-阿里云开发者社区-阿里云

开发者社区> kun坤> 正文

AttributeError:“_tkinter。对象没有属性TclError

2019-12-25 09:43:34 389 1

我试图在我的tkinter窗口中嵌入一个matplotlib图形,并使用以下代码作为基础,然后在我的主代码中使用它。 https://matplotlib.org/gallery/user_interfaces/embedding_in_tk_canvas_sgskip.html 如果我运行下面的代码,我得到以下错误: AttributeError:“_tkinter。对象没有属性TclError 代码:

import matplotlib as mpl
import numpy as np
import sys
import tkinter as tk
import matplotlib.backends.tkagg as tkagg
from matplotlib.backends.backend_agg import FigureCanvasAgg


def draw_figure(canvas, figure, loc=(0, 0)):
    #Draw a matplotlib figure onto a Tk canvas. loc: location of top-left corner of figure on canvas in pixels. Inspired by matplotlib source: lib/matplotlib/backends/backend_tkagg.py

    figure_canvas_agg = FigureCanvasAgg(figure)
    figure_canvas_agg.draw()
    figure_x, figure_y, figure_w, figure_h = figure.bbox.bounds
    figure_w, figure_h = int(figure_w), int(figure_h)
    photo = tk.PhotoImage(master=canvas, width=figure_w, height=figure_h)

    # Position: convert from top-left anchor to center anchor
    canvas.create_image(loc[0] + figure_w/2, loc[1] + figure_h/2, image=photo)

    # Unfortunately, there's no accessor for the pointer to the native renderer
    tkagg.blit(photo, figure_canvas_agg.get_renderer()._renderer, colormode=2)

    # Return a handle which contains a reference to the photo object
    # which must be kept live or else the picture disappears
    return photo

# Create a canvas
w, h = 300, 200
window = tk.Tk()
window.title("A figure in a canvas")
canvas = tk.Canvas(window, width=w, height=h)
canvas.pack()

# Generate some example data
X = np.linspace(0, 2 * np.pi, 50)
Y = np.sin(X)

# Create the figure we desire to add to an existing canvas
fig = mpl.figure.Figure(figsize=(2, 1))
ax = fig.add_axes([0, 0, 1, 1])
ax.plot(X, Y)

# Keep this handle alive, or else figure will disappear
fig_x, fig_y = 100, 100
fig_photo = draw_figure(canvas, fig, loc=(fig_x, fig_y))
fig_w, fig_h = fig_photo.width(), fig_photo.height()

# Add more elements to the canvas, potentially on top of the figure
canvas.create_line(200, 50, fig_x + fig_w / 2, fig_y + fig_h / 2)
canvas.create_text(200, 50, text="Zero-crossing", anchor="s")

# Let Tk take over
tk.mainloop()

有人能帮我解决这个错误吗?我在Stack Overflow上发现了类似的问题,但是针对不同的属性(‘choice’,‘getitems’,‘text’,‘PassCheck’等等)。谢谢。 问题来源StackOverflow 地址:/questions/59466692/attributeerror-tkinter-tkapp-object-has-no-attribute-tclerror

取消 提交回答
全部回答(1)
  • 问问小秘
    2019-12-26 10:18:57

    替换import matplotlib as mpl为:

    from matplotlib.figure import Figure
    

    然后替换import matplotlib.backends.tkagg as tkagg为

    from matplotlib.backends import _backend_tk
    

    最后,替换该行:

    tkagg.blit(photo, figure_canvas_agg.get_renderer()._renderer, colormode=2)
    

    与:

    _backend_tk.blit(
        photo, figure_canvas_agg.get_renderer()._renderer, (0, 1, 2, 3))
    
    0 0
相关问答

19

回答

【分享】如何提高网站的打开速度?

enj0y 2012-11-17 14:35:22 56741浏览量 回答数 19

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146818浏览量 回答数 22

41

回答

OSS FTP工具发布啦

oss-dev 2015-12-23 16:58:56 66036浏览量 回答数 41

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 145660浏览量 回答数 31

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135637浏览量 回答数 42

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302652浏览量 回答数 249

13

回答

【云服务器分享】如何节省网站流量

dreamdoo 2012-10-15 10:36:09 80146浏览量 回答数 13

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471615浏览量 回答数 24

30

回答

基础语言百问-Python

薯条酱 2017-05-17 18:01:13 64778浏览量 回答数 30

21

回答

OSS新手视频教程!

聚小编 2013-01-14 18:09:51 58008浏览量 回答数 21
+关注
0
文章
13401
问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载