当前位置:   article > 正文

Tkinter——在text中插入图片_tkinter text 插入图片

tkinter text 插入图片

0.前言

最近因为写课设(聊天室系统),需要在tkinter的text组件中插入图片,在网上查阅了很多资料并没有找到这方面的内容,最后通过仔细阅读官方文档,找到了这方面的内容,并且跳了很多坑,所以决定来水一篇文章。
附上官方文档地址:
tkinter之text官方文档

1.插入图片

要在text中插入图片,需要用到image_create(index, cnf={}, **kw) 这个方法。具体的一个例子请看下面。

from tkinter import *

root = Tk()
text = Text(root)
photo = PhotoImage(file='./emoji_file/a1.GIF')
text.image_create(END, image=photo)#用这个方法创建一个图片对象,并插入到“END”的位置
text.pack()
root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

运行结果:
这里写图片描述

与图片操作有关的一些方法:
(1)image_cget(index, option=),返回option后面给定的参数的值,option可以等于file,name,ganma等参数。
(2)image_configure(index, **options),option可选的参数同上,此外还可以设置align、image、name、padx、pady等参数的值。
(3)image_names(),返回图片的名称。
(4)没有其他的方法了,毕竟用这个组件去操作图片用的不多。

注意

1.使用这个方法创建的图片对象使用的索引(指的是END,CURRENT等index属性)与插入文字时的索引不是同一个,如果需要按照一定的索引位置插入图片,需要自行创建一个mark对象。

2.这个方法只能插入GIF图片,如果需要插入其他种类的图片,需要使用PIL库中的ImageTk方法进行转换,下面是官方文档给出的一个例子

from PIL import Image, ImageTk

image = Image.open("lenna.jpg")
photo = ImageTk.PhotoImage(image)
  • 1
  • 2
  • 3
  • 4

2.遇到的问题

个人觉得使用tkinter这个库时经常会遇到一些奇怪的问题,建议只要有一点小的问题都应该去stackflow上查一下,很多时候一些问题你是想不到的。官方文档给出的东西很少,你不可能通读一遍文档再去写代码。

比如,如果你使用Tk()初始化了一个窗体之后,再使用TK()初始化另一个窗体,没问题。但是如果你在第二个Tk()中创建了text组件,并且准备在这个组件中去添加图片的时候,会报一个错误。

tkinter.TclError: image “pyimage” doesn’t exist
stackoverflow上给出的解释是不能使用两次Tk()去创建窗体,因为tkinter中只能有一个主线程,当你需要再次创建一个窗体时,请使用Toplevel()。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/767617
推荐阅读
相关标签
  

闽ICP备14008679号