首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将matplotlib嵌入tkinter canvas将打开两个窗口

是因为matplotlib默认会创建一个独立的窗口来显示图形,而tkinter也会创建一个窗口来显示应用程序的界面。因此,当将matplotlib绘制的图形嵌入到tkinter的canvas中时,会同时打开两个窗口。

要解决这个问题,可以通过使用matplotlib的FigureCanvasTkAgg类来将图形嵌入到tkinter的canvas中,而不是使用默认的窗口显示图形。下面是一个示例代码:

代码语言:txt
复制
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

# 创建tkinter窗口
root = tk.Tk()

# 创建matplotlib的Figure对象
fig = Figure()

# 在Figure对象上创建子图
ax = fig.add_subplot(111)
ax.plot([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])

# 创建FigureCanvasTkAgg对象,将Figure对象嵌入到tkinter的canvas中
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()

# 在tkinter窗口中放置canvas
canvas.get_tk_widget().pack()

# 运行tkinter主循环
root.mainloop()

在这个示例代码中,我们首先创建了一个tkinter窗口,然后创建了一个matplotlib的Figure对象,并在其上创建了一个子图。接下来,我们使用FigureCanvasTkAgg类将Figure对象嵌入到tkinter的canvas中,并将canvas放置在tkinter窗口中。最后,通过运行tkinter的主循环来显示窗口和图形。

这样,就可以实现将matplotlib嵌入到tkinter的canvas中,而不会打开额外的窗口。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

matplotlibtkinter 集成小案例 (上篇)

matplotlib 是绘图界最通用的库,功能强大,与其他系统集成友好,比如Python内置的绘图模块tkinter,这篇文章的主要目标:实现一个使用tkinter集成matplotlib交互绘图案例。...此案例,创建tkinter窗口及组件的代码,如下: window = tk.Tk() # 第2步,给窗口的可视化起名字 window.title('My Window') # 第3步,设定窗口的大小...(长 * 宽) # 这里的乘是小x window.geometry('1200x600') # 第4步,在图形界面上创建一个标签label用以显示并放置 # 定义一个var用来radiobutton...下面就是最重要的tkintermatplotlib集成部分,matplotlib提供FigureCanvasTkAgg对象,只需三行代码,实现图形绘制在tkinterCanvas中: canvas_l...figure对象(matplotlib对象)与frame对象(tkinter组件)关系的建立,第二行使用集成后的对象中的draw方法绘图,最后拿到tkinter组件并组装到tkinter中。

2K30
  • Python|gui编程之用pywin32实现“消息轰炸机”

    pip install pywin32 pip install pillow 3详细步骤 这个程序可以分为两个部分,小编通过以下几个步骤给大家来实现这个程序。...嵌入预设的图片 canvas_root.pack()#画布显示出来 root.mainloop()#让窗口一直显示 注意:图片名前面的是路径,resource与py文件是同一目录下的。...图5.1主窗口 5.2添加组件 添加的所有组件都需两个步骤,先是设置组件参数(大小,字体,颜色),然后再用tkinter的几种布局方式(grid、place、pack)布局,几种方式的具体区别这里就不多讲了...root.title('消息轰炸机')#给窗口命名 root.geometry('400x500+50+50')#设置窗口大小及位置 canvas_root = Canvas(root,width...(200,250,image = im_root)#嵌入预设的图片 canvas_root.pack()#画布显示出来 label1 = Label(root,text = '联系人',font

    3.2K30

    Tkinter学习笔记一:第一个简单的python图形界面程序

    参考资料 B站教学视频 IT兄弟连 Python视频教程 Python核心方法 tkinter Tkinter 做简单的窗口视窗 (GUI 莫烦 Python 教程) 程序基本功能 选择数据——生成柱形图...image.png 代码 #导入需要的模块 import tkinter as tk import tkinter.filedialog import pandas as pd import matplotlib.pyplot...= tk.Canvas(root) image_file = tk.PhotoImage(file="th.gif") image = canvas.create_image(0,0,anchor="...nw",image=image_file) canvas.pack() # root.mainloop() 小知识点 获取文件路径 tkinter.filedialog.askopenfilename...2、如何生成的结果图以弹窗的形式显示出来,在弹出之前还要问是否显示。 3、如何结果打包成一个可执行文件,直接通过鼠标点击启动,而不需要通过命令行启动图形界面。

    1.4K20

    python笔记:可视化界面写作尝试

    他有点像是使用matplotlib进行绘图的方式,首先创建一个基础画布(基础的窗口),然后定义不同的绘图曲线(窗口插件),然后将定义的曲线(窗口插件)放置到画布(窗口)上进行显示。...组件的部署 如前,我们事实上已经初步看到了界面中组件的使用方法,它基本包含两个步骤: 定义组件; 组件安放到可视化界面窗口当中; 而要将组件加载到界面当中,我们只需要使用使用pack()方法即可。...Optionmenu组件 Optionmenu组件和Listbox组件在功能上事实上差不多,但是前者是平铺式的所有可选项全部显示出来,而Optionmenu则是通过一个折叠窗口选项进行了隐藏。...图片类组件 tkinter库同样支持图片的显示,和matplotlib等库绘制图片的方法大同小异,tkinter进行图片显示的方法同样是先定义一个画布,而后向画布当中填充元素。 1....Canvas组件 Canvas组件就是tkinter库中的画布组件,我们要进行图片的绘制,首先就要创建一个画布,即实例化一个Canvas类,然后所有的图像元素添加到画布上之后在进行pack展示。

    4.6K30

    Python+Tkinter 图形化界面基础篇:添加图形和图像

    本篇博客介绍如何在 Tkinter 中添加图形元素、绘制基本图形以及显示图像。我们详细讨论这些概念,并提供示例代码以帮助你更好地理解。...步骤1:导入 Tkinter 首先,导入 Tkinter 库: import tkinter as tk 步骤2:创建主窗口 创建一个主 Tkinter 窗口: root = tk.Tk() root.title...步骤5:启动主事件循环 最后,启动 Tkinter 的主事件循环以显示主窗口Canvas : root.mainloop() 现在,当你运行这个应用程序时,你看到一个主窗口中包含不同类型的图形元素...: root = tk.Tk() root.title("显示图像") 步骤3:打开图像文件 打开图像文件,并将其转换为 Tkinter 可用的格式: image = Image.open("example.png...的主事件循环以显示主窗口和图像: root.mainloop() 效果图: 现在,当你运行这个应用程序时,你看到一个主窗口中显示了图像文件。

    1.2K10

    错误、异常

    #生成标签 6 label.pack() #标签添加到root主窗口 7 button1 = tkinter.Button...布局组件: 组件pack方法参数设置组件的位置: before:组件置于其他之间之前; after:组件置于其他组件之后; side:组件在主窗口的位置,可以为“top”、“bottom”、“left...打开图片 10 canvas.create_image(300,50,image = im) #使用create_image图片添加到Canvas组件中 11 canvas.create_text...() #canvas添加到主窗口 32 root.mainloop() 事件: 鼠标事件、键盘事件、窗口事件,绑定事件的组件:...模块可以创建文件打开与保存文件对话框 tkinter.filedialog模块中的askopenfilename函数可以创建打开文件对话框 tkinter.filedialog模块中的asksaveasfilename

    6.3K10

    基于tkinter的GUI编程

    #生成标签 6 label.pack() #标签添加到root主窗口 7 button1 = tkinter.Button...布局组件: 组件pack方法参数设置组件的位置: before:组件置于其他之间之前; after:组件置于其他组件之后; side:组件在主窗口的位置,可以为“top”、“bottom”、“left...打开图片 10 canvas.create_image(300,50,image = im) #使用create_image图片添加到Canvas组件中 11 canvas.create_text...() #canvas添加到主窗口 32 root.mainloop() 事件: 鼠标事件、键盘事件、窗口事件,绑定事件的组件:...模块可以创建文件打开与保存文件对话框 tkinter.filedialog模块中的askopenfilename函数可以创建打开文件对话框 tkinter.filedialog模块中的asksaveasfilename

    5.4K10

    一个Python GUI神器,双手彻底解放!

    它支持4个框架,包括tkinter,Qt,WxPython和Remi。...更牛逼的是,这4行代码可与tkinter,Qt和Web端口一起使用。比如,我们可以使用tkinter显示图像的相同代码在浏览器中实时显示网络摄像头。 ?...注意窗口底部的两个滑块,这两个滑块可更改YOLO算法使用的两个参数。 ? 绘图 使用PySimpleGUI在GUI中显示数据交互很简单,有几种选择。 一是可以使用内置的绘图/绘图功能来生成自定义图形。...二是PySimpleGUI可以Matplotlib图形直接嵌入到GUI窗口中。如果要保留Matplotlib交互功能,甚至可以交互控件嵌入窗口中。 ?...使用PySimpleGUI的颜色主题,还可以生成比Matplotlib中默认创建更炫酷的图形。 ? 前端 前端GUI是一个收集信息,并将其转化为命令行的应用程序。

    3.4K20

    tkinter)撩妹弹窗(3)之不要越过三八线,canvas的使用方法

    tkinter)撩妹弹窗(3)之不要越过三八线,canvas的使用方法 今天,我们又来搞事情了。 ?...(Tkinter) 二、目录 (tkinter)撩妹弹窗(3)之不要越过三八线,canvas的使用方法 一、系列章节列表 二、目录 三、前言 四、正文 第一步:我有一个窗口 第二步:弹窗之同桌叫我不要越过...这里有两个变化,突变和渐变 突变:突然改变,达到超过某一条线之后,突然变为另外一个。 渐变:逐渐改变,到达某一条线时,中间会显示这条分界线,逐渐变为另外一个。...Tkinter的画布功能,canvas。...(image) # 引入图片 canvas.create_image(x, y, anchor='nw', image=photo)#图片加入画布,要把图片放到外层,或者是声明全局变量 类似于文字的坐标

    1.6K30

    Tkinter绘制股票K线图

    在前面的文章中,我们一起学习了如何通过 Python 抓取东方财富网的实时股票数据以及如何制作成 Tkinter GUI 程序,链接如下 用 Python 爬取股票实时数据 Tkinter制作股票数据抓取小程序...今天我们就在这个基础上,在 Tkinter 程序中绘制 K 线图,一起来看看吧 子窗口 我们今天的整体代码还是基于上次的 Tkinter 股票程序,在主类 MainCreator 下面创建一个函数 create_subwindow...对于子窗口代码,subWindow 函数是子窗口的主要函数 子窗口框架 子窗口主要代码如下 def subWindow(self, root_frame): file_list...canvas...._tkcanvas.pack(side=BOTTOM, fill=BOTH, expand=1) 我们通过 Matplotlib + mplfinance 来绘制K线图 首先是通过 Pandas 来处理数据

    1.6K20

    如何用tkinter给你女朋友画一个爱心,这满满的油腻感是怎么回事?

    之前使用的模块是matplotlib又或者是使用tkinter显示桃心图片。 那这次与之前是不同的,这次,我们直接用tkinter画出来。需要使用到画,那就需要知道画布的功能。...tkinter的画布功能。 第一步:导入模块 tkinter是python的内置模块,所以不需要额外安装,只需要引用就可以。...import tkinter from tkinter import Canvas 使用画布功能 canvas = Canvas ( master,……) master: 按钮的父容器。...,...xn, yn, options) 第三步:画桃心 我们先分析一下桃心的构成,桃心分为上下两个部分,然后上半部分我们又可以分为两个扇形,下半部分是一个三角形。...代码如下: import tkinter from tkinter import Canvas def windows(): tk=tkinter.Tk() tk.attributes

    93910

    基于Python手把手教你实现一个遗传算法(含具体源码,以及UI演变过程)

    首先,我们需要安装Python和相关的科学计算库,前提是已经安装了Python环境,并使用pip安装了numpy、matplotlibtkinter库。...其中,numpy和matplotlib库将在遗传算法实现中起到重要的作用,而tkinter库用于构建图形用户界面。下面按照以下步骤来实现带有图形用户界面的遗传算法。...具体操作步骤如下所示:import numpy as npimport matplotlib.pyplot as pltimport tkinter as tkfrom matplotlib.backends.backend_tkagg...库创建一个简单的窗口,并在窗口中显示遗传算法的演变过程,具体操作如下所示:window = tk.Tk()window.title("Genetic Algorithm Visualization")#...创建一个绘图区域figure = plt.figure(figsize=(6, 4))canvas = FigureCanvasTkAgg(figure, master=window)canvas.get_tk_widget

    2.6K52

    Python初学——窗口视窗Tkinter

    Tkinter Python自带的可编辑的GUI界面,是一个图像窗口。...tkinter窗口部件 2.1 Label & Button 标签和按钮 窗口主体框架 每一个tkinter应用的主体框架都可以包含下面这部分,定义window窗口和window的一些属性,然后书写窗口内容...两个都选中: ? 两个都不选: ? 2.7 Canvas 画布 规定一片区域,可以放置图片、图形等等,并且可以把位置和形状进行改变。...放置一张图片,首先读取读片并存入到image_file中,接着Canvas通过create.image图片放置到画布上。...window_sign_up.destroy() 打开读取文件usrs_info,首先判断密码是否相等,如果不相等,则弹出窗口提示密码输入不一致 如果用户名存在,则弹出窗口提示用户名已经注册 注册合格的话

    6.4K70

    python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例

    中出现的坑(界面Tk()+图片显示) 一、关于Python3的tkinter模块 1、首先关于创建Python的窗口是导入 import tkinter 或者 from tkinter import *...,就是直接创建两个界面,这个方法非常实用,应用在多个函数调用并生成Python窗口上面。...("500x300+10+10") win.mainloop() 上面的代码运行后将出现以下的两个窗口: ?...二、# 关于在Label中显示图片的大坑 1、在Label 中显示图片需要用到tkinter 与pillow这两个模块 单独运行一个在tkinter上显示的图片没有问题,但是如果把这个显示图片的函数放在一个...以上这篇python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

    5.5K20

    Python学习之GUI--登录系统界面篇

    Login(object):       def __init__(self):           # 创建主窗口,用于容纳其它组件           self.root = tkinter.Tk...')           #运行代码时记得添加一个gif图片文件,不然是会出错的         self.canvas = tkinter.Canvas(self.root, height=200,...self.image = self.canvas.create_image(0,0, anchor='nw', image=self.image_file)#图片置于画布上           self.canvas.pack...('450x300') 给窗口root设置标题,并设置窗口 self.canvas = tkinter.Canvas(self.root, height=200, width=500)#创建画布 self.image_file...='nw', image=self.image_file)#图片置于画布上 self.canvas.pack(side='top')#放置画布(为上端) 如果我们需要让自己的界面在美观上加分,大可以试试创建一个画布

    5.5K30
    领券