精华内容
下载资源
问答
  • 先来看一下该方法的说明 create_image(position, **options) [#] Draws an image on the canvas. position Image position, given as two coordinates. **options Image options. activeimage= ...
  • python tkinter canvas 显示图片

    万次阅读 多人点赞 2018-03-06 15:37:25
    先来看一下该方法的说明 create_image(position, **options) [#] Draws an image on the canvas. position Image position, given as two coordinates. **options Image options. ...Where to place the ...

    先来看一下该方法的说明

    create_image(position, **options) [#]
    Draws an image on the canvas.
    
    position
    Image position, given as two coordinates.
    **options
    Image options.
    activeimage=
    anchor=
    Where to place the image relative to the given position. Default is CENTER.
    disabledimage=
    image=
    The image object. This should be a PhotoImage or BitmapImage, or a compatible object (such as the PIL PhotoImage). The application must keep a reference to the image object.
    state=
    Item state. One of NORMAL, DISABLED, or HIDDEN.
    tags=
    A tag to attach to this item, or a tuple containing multiple tags.
    Returns:
    The item id.

    关于image有两个重要的点要注意,一个是格式,第二是要保持持续引用
    The image object. This should be a

    1.This should be a PhotoImage or BitmapImage, or a compatible object (such as the PIL PhotoImage).
    2.The application must keep a reference to the image object.

    因此代码应该这样写,并且变量im应该是全局变量

    image = Image.open("img.jpg")  
    im = ImageTk.PhotoImage(image)  
    
    canvas.create_image(300,50,image = im)  

    但如果我就是想要在方法里调用怎么办?
    那么可以提前声明全局变量

    image = None
    im = None

    之后在方法里使用global来声明变量为全局变量
    即:

    def method():
        global image
        global im
        image = Image.open("img.jpg")  
        im = ImageTk.PhotoImage(image)  
        ...
    展开全文
  • Tkinter Canvas画布 & 图片导入 import tkinter as tk # 实例化一个窗口对象 window = tk.Tk() # 设置title window.title('my window') # 设置大小,XxY的字符串格式 window.geometry('600x400') canvas = tk...

    Tkinter Canvas画布 & 图片导入

    
    import tkinter as tk
    
    # 实例化一个窗口对象
    window = tk.Tk()
    # 设置title
    window.title('my window')
    # 设置大小,XxY的字符串格式
    window.geometry('600x400')
    
    
    canvas = tk.Canvas(window, bg='blue', height=100, width=400)
    # 自带的PhotoImage只能使用gif图片
    image_file = tk.PhotoImage(file=r'C:\Users\Administrator\Desktop\2.gif')
    # 0,0 -> 锚定的点, anchor='nw' -> 左上角锚定
    image = canvas.create_image(0, 0, anchor='nw', image=image_file)
    
    # 画布上画一条线
    x0, y0, x1, y1 = 50, 50, 80, 80
    line = canvas.create_line(x0, y0, x1, y1)
    # 画一个红色的圆
    oval = canvas.create_oval(x0, y0, x1, y1, fill='red')
    # 画一个正方形
    rect = canvas.create_rectangle(100, 30, 100 + 20, 30 + 20)
    
    
    def moveit():
        # 将rect对象向下移动
        canvas.move(rect, 0, 2)
    
    
    canvas.pack()
    b = tk.Button(window, text='move', command=moveit).pack()
    
    window.mainloop()  # 循环显示
    
    
    
    from PIL import ImageTk,Image
    # 针对其他格式的对象需要借助PIL处理图像,通过tk.Label实现
    window2 = tk.Tk()
    window2.geometry('600x400')
    im = Image.open(r'C:\Users\Administrator\Desktop\1.jpg')
    img = ImageTk.PhotoImage(im)
    tk.Label(window2,image=img,width=300,height=300).pack()
    window2.mainloop()
    
    展开全文
  • 从百度知道问题“请问为什么在我的Python中使用 canvas 不显示图片?”中知道了要在img = ImageTk.PhotoImage(image=Image.fromarray(array))后面加一句new_win.a=img,“因为image被垃圾回收了” 所以到底为什么会...
  • tkinter的canvas上显示OpenCV图像

    千次阅读 2020-03-19 15:33:02
    tkinter是python中界面设计常用的库,但是对图片显示的仅支持GIF 和 PGM/PPM 文件格式。和OpenCV没有直接的转换函数,这里另外引进了python常用的图像库PIL来间接的进行转换。 实现了在在tkinter的canvas上显示...
    tkinter是python中界面设计常用的库,但是对图片显示的仅支持GIF 和 PGM/PPM 文件格式。和OpenCV没有直接的转换函数,这里另外引进了python常用的图像库PIL来间接的进行转换。
    实现了在在tkinter的canvas上显示OpenCV图像。效果如图:
    

    显示效果
    实现代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Fri Mar 13 14:37:33 2020
    
    @author: xin
    """
    from tkinter import *
    import cv2 as cv
    from a import Image,ImageTk
    
    def Showimage(imgCV_in,canva,layout="null"):
        """
        Showimage()是一个用于在tkinter的canvas控件中显示OpenCV图像的函数。
        使用前需要先导入库
        import cv2 as cv
        from PIL import Image,ImageTktkinter
        并注意由于响应函数的需要,本函数定义了一个全局变量 imgTK,请不要在其他地方使用这个变量名!
        参数:
        imgCV_in:待显示的OpenCV图像变量
        canva:用于显示的tkinter canvas画布变量
        layout:显示的格式。可选项为:
            "fill":图像自动适应画布大小,并完全填充,可能会造成画面拉伸
            "fit":根据画布大小,在不拉伸图像的情况下最大程度显示图像,可能会造成边缘空白
            给定其他参数或者不给参数将按原图像大小显示,可能会显示不全或者留空
        """
        global imgTK
        canvawidth = int(canva.winfo_reqwidth())
        canvaheight = int(canva.winfo_reqheight())
        sp = imgCV_in.shape
        cvheight = sp[0]#height(rows) of image
        cvwidth = sp[1]#width(colums) of image
        if (layout == "fill"):
            imgCV = cv.resize(imgCV_in,(canvawidth,canvaheight), interpolation=cv.INTER_AREA)
        elif(layout == "fit"):
            if (float(cvwidth/cvheight) > float(canvawidth/canvaheight)):
                imgCV = cv.resize(imgCV_in,(canvawidth,int(canvawidth*cvheight/cvwidth)), interpolation=cv.INTER_AREA)
            else:
                imgCV = cv.resize(imgCV_in,(int(canvaheight*cvwidth/cvheight),canvaheight), interpolation=cv.INTER_AREA)
        else:
            imgCV = imgCV_in
        imgCV2 = cv.cvtColor(imgCV, cv.COLOR_BGR2RGBA)#转换颜色从BGR到RGBA
        current_image = Image.fromarray(imgCV2)#将图像转换成Image对象
        imgTK = ImageTk.PhotoImage(image=current_image)#将image对象转换为imageTK对象
        canva.create_image(0,0,anchor = NW, image = imgTK)
    
    root = Tk()
    root.title("OpenCV Win")
    canva = Canvas(root, width=800, height=600,bg="gray")
    canva.pack()
    img = cv.imread("test.jpg")
    Showimage(img,canva,"fill")
    root.mainloop()
    
    展开全文
  • Python Tkinter GUI(三)显示图片

    万次阅读 多人点赞 2017-11-10 16:49:31
    怎么才能让界面显得美观呢?布局,色彩,图片这些都可以让...Label,文本,可以显示文本,也可以用来显示图片。 1.文本 label_text = Tkinter.Label(root, text = '文本'); label_text.pack(); 2.

    怎么才能让界面显得美观呢?布局,色彩,图片这些都可以让界面看着舒服,操作体验好。这章看看如何添加图片,以及比较坑的地方,撸起袖子就是干。

    一、Label

    Label,文本,可以显示文本,也可以用来显示图片。

    1.文本

    label_text = Tkinter.Label(root, text = '文本');
    label_text.pack();

    2.图片

    在同目录下放三张图片,分别是img_png.png,img_jpg.jpg,img_gif.gif

    img_png = Tkinter.PhotoImage(file = 'img_png.png')
    label_img = Tkinter.Label(root, image = img_png)
    label_img.pack()

    恭喜你,获得了一个bug

    报错:couldn't recognize data in image file "img_png.png”,意思是不能识别”img_png.png”这图片,原因是不能用png,jpg格式的图片,但是可以支持gif格式。强行把png后缀改为gif,这是不行的,你必须使用工具转出gif格式。


    正确代码:

    img_gif = Tkinter.PhotoImage(file = 'img_gif.gif')
    label_img = Tkinter.Label(root, image = img_gif)
    label_img.pack()

    运行:

    二、button

    1.不设置图片的button

    button = Tkinter.Button(root, text = '不带图按钮')
    button.pack()

    2.设置图片的button

    添加两张按钮图片放在同目录下,分别是button_png.png,button_gif.gif

    button显示图片有2种方式,分别是image,bitmap

    image:跟上面是一样的,得使用gif格式。

    bitmap:格式是xbm,当然系统也提供了一部分xbm文件,比如:Tkinter.BitmapImage(file = 'xx.xbm')

    #带图button,image
    button_img_gif = Tkinter.PhotoImage(file = 'button_gif.gif')
    button_img = Tkinter.Button(root, image = button_img_gif, text = '带图按钮')
    button_img.pack()
    
    #带图button,bitmap
    button_bitmap = Tkinter.Button(root, bitmap = 'error', text = '带图按钮')
    button_bitmap.pack()

    运行之后你会发现按钮上的文本不见了,一脸懵逼。

    整体代码如下:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import Tkinter
    
    root = Tkinter.Tk()
    root.title('应用程序窗口')        #窗口标题
    root.resizable(False, False)    #固定窗口大小
    windowWidth = 800               #获得当前窗口宽
    windowHeight = 500              #获得当前窗口高
    screenWidth,screenHeight = root.maxsize()     #获得屏幕宽和高
    geometryParam = '%dx%d+%d+%d'%(windowWidth, windowHeight, (screenWidth-windowWidth)/2, (screenHeight - windowHeight)/2)
    root.geometry(geometryParam)    #设置窗口大小及偏移坐标
    root.wm_attributes('-topmost',1)#窗口置顶
    
    #label文本
    label_text = Tkinter.Label(root, text = '文本');
    label_text.pack();
    
    #label图片
    img_gif = Tkinter.PhotoImage(file = 'img_gif.gif')
    label_img = Tkinter.Label(root, image = img_gif)
    label_img.pack()
    
    #不带图button
    button = Tkinter.Button(root, text = '不带图按钮')
    button.pack()
    
    #带图button,image
    button_img_gif = Tkinter.PhotoImage(file = 'button_gif.gif')
    button_img = Tkinter.Button(root, image = button_img_gif, text = '带图按钮')
    button_img.pack()
    
    #带图button,bitmap
    button_bitmap = Tkinter.Button(root, bitmap = 'error', text = '带图按钮')
    button_bitmap.pack()
    
    root.mainloop()

    运行效果

    三、Pillow第三方库添加png,jpg格式图片

    想要使用格式png,jpg来添加图片,使用第三方库(这时真想吐槽,你TM添加个图片还要使用第三方库),这秘籍的名字叫做Pillow。Pillow主要是用来处理图片,你仔细去研究它,你会发现它功能很强大。

    1.安装Pillow

    • pyCharm --> preferences

    • Project:python --> Project Interpreter

    • 选择Project Interpreter,然后左下角有个+号,点击添加第三方库

    • 搜索Pillow并下载安装

    • 安装成功了会显示在列表中,并运用Pillow

    2.代码

    • 导入PIL模块

    from PIL import Image, ImageTk

    • 添加图片

    img_open = Image.open('img_png.png')
    img_png = ImageTk.PhotoImage(img_open)
    label_img = Tkinter.Label(root, image = img_png)
    label_img.pack()


    这章到这就结束了,功能都是很小,这里并没有对Label,Button细讲。有兴趣的可以去官网看看Label,Button控件的介绍及功能。


    展开全文
  • tkiner-canvas显示图片

    2020-06-19 14:57:39
    方式1 tkiner自带的打开图片的方式,只能打开gif图片 import tkinter as tk window = tk.Tk() window.title('test')#设置窗口名 window.geometry('200x200')#设置窗口大小 canvas = tk.Canvas(window,height=400,...
  • 实现:tkinter 画布显示图片,按下鼠标左键并且移动,实现截图 代码如下 # -*- encoding=utf-8 -*- import os import tkinter as tk from PIL import Image from PIL import ImageTk left_mouse_down_x = 0 left_...
  • turtle学习笔记之在tkinter画布上作图

    千次阅读 2019-04-06 21:23:37
    因为毕设的原因,最近在同时学习tkinter和turtle,希望可以在自己需要的GUI上面画出图像。 查看文档 查了一下python中关于turtle的文档,可以发现下面的描述: TurtleScreen 类定义图形窗口作为绘图海龟的运动...
  • tkinter中的canvas的边框问题

    千次阅读 2020-02-20 15:00:41
    使用tkinter中创建canvas时,会设置canvas的宽高。一般我们认为canvas中画图区域就是设置的宽高。其实这不太正确,canvas还有一个边框,如果不另外设置,真正的画图区域要减去边框。 比如我们容器的尺寸为width, ...
  • 最近在用tkinter做一个图形化的小游戏,我想在背景上加上图片,其中方法来自这篇文章。 因为要做页面间的跳转,我做的每个页面就是一个.py文件,这个py文件里包含了一个这个页面所属的类,所以我是在类里调用了上述...
  • from tkinter import * from PIL import ImageTk root = Tk() numIdx = 6 frames = [ImageTk.PhotoImage(file='./data/'+str(i)+'.jpg') for i in range(1,7)] def update(idx): # 定时器函数 frame = frames...
  • 结果半天都做不好,网上各种混乱的代码几乎没一个能用的,最后干脆曲线救国,统计完之后统计视图自动保存成图片,这个比较简单,用savefig就行,然后想看哪张图就读取图片显示到窗口的画布上. 但是动态的在画布上换图很不...
  • Tkinter 模块(Tk 接口)是 Python 的...有时候需要在GUI中展示网络图片,下面介绍如何在tkinter中展示网络图片,以下代码适用于python3.7以上的版本。 需要用到的库如下: tkinter: GUI库 requests: 下载图片数据 io: 存
  • python tkinter canvas 切换显示图片的问题解决方案

    千次阅读 热门讨论 2018-09-29 09:23:22
    因此,如果你有多张图片需要切换显示,一个解决的思路是: 建立一个列表,有多少张要切换的图片,就append多少个None对象到这个列表中去,等到要切换的时候再去打开图像并转成PhotoImage。 搞这个问题花了我一...
  • 在使用tkinter时,为窗口添加背景图片,但是通过函数实现时,图片显示无效。 问题分析 当你向Tkinter小部件添加PhotoImage或其他图像对象时,必须保留对该图像对象的引用。如果你不这样做,图像就不会一直出现。 ...
  • 程序既可在Canvas中绘制直线、矩形、椭圆等各种几何图形,也可绘制图片、文字、UI组件(如Button)等。Canvas允许重新改变这些图形项(Tkinter将程序绘制的所有东西统称为item)的属性,比如改变其坐标、外观等。...
  • python+tkinter中使用canvas 切换不显示图片的问题 一、canvas使用 canvas对象的create_image方法有两个重要的点要注意,一个是格式,第二是要保持持续引用: 1.This should be a PhotoImage or BitmapImage, or ...
  • Tkinter界面动态显示变化数值

    千次阅读 热门讨论 2021-04-03 16:34:30
    例举字符串StringVar()和整型IntVar() var = tk.StringVar() 或 var = tk.IntVar() ...import tkinter as tk from tkinter import * import time if __name__=="__main__": top=tk.Tk() top.wm_title("face rec
  • 引入②tkinter 引入①PIL Image, ImageTk注意两者顺序。因为,各有同名者,(如Image),后来者居上也。(这也是个坑)#__________________据说要对抗回收垃圾的机制,设一个高老伯。global photo用photo=Image.open...
  • tkinter--画布

    2020-12-05 19:57:26
    Canvas(画布)组件为 Tkinter 的图形绘制提供了基础。Canvas 是一个高度灵活的组件,你可以用它绘制图形和图表,创建图形编辑器,并实现各种自定义的小部件。Canvas 是一个通用的组件,通常用于显示和编辑图形。你...
  • tkinter 背景图片铺满

    千次阅读 2021-05-19 13:07:25
    图片大小:960x540 画布应该设置大小:(screen_width - width) / 2 + 192, (screen_height - height) / 2 + 108 canvas.create_image((screen_width - width) / 2 + 192, (screen_height - height) / 2 + 108, image...
  • global img_ global laser_map # 地图数据,从服务器收到数据,先解码 laser_map = base64.b64decode(msg) file_image = open('build_map.png', 'wb+') ... file_image.write(laser_map) ...
  • tkinter显示matplotlib所画的图

    千次阅读 2020-07-08 22:27:59
    把使用matplotlib所画的饼状图显示tkinter的窗口中,效果如下: 代码如下: import tkinter as tk import matplotlib from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure ...
  • import tkinter as tk import tkinter.filedialog import cv2 def choose_file(): # 选择文件 selectFileName = tk.filedialog.askopenfilename(title='选择文件') e.set(selectFileName) def show(e_entr...
  • 随机显示,还加了圆圈,这样感觉更好点。 from django.test import TestCase # Create your tests here. import random import json import time import tkinter as tk from tkinter import filedialog ...
  • 简介画布部件则用于将结构化图形的 Python 应用。它是用于绘制图表和曲线图的 Python 应用。画布部件则用于将结构化图形的 Python 应用。它是用于绘制图表和曲线图的 Python 应用。使用画布的语法如下:语法w = ...
  • python中tkinter的Canvas绘图不显示的解决方法1、如下为绘图不成功的代码2、解决办法3、原因 1、如下为绘图不成功的代码 from tkinter import * import math WIDTH, HEIGHT = 510, 210 ORIGIN_X, ORIGIN_Y = 2, ...
  • 画布(Canvas)是用于绘制图片或其他复杂布局的矩形区域。您可以在上面放置图形、文本、控件或框架(Frame)。有关在 Canvas 上创建对象的方法,请参见以下部分: .create_arc():一个椭圆的切片。 .create_bitmap():...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 786
精华内容 314
关键字:

tkinter画布显示图片