gpt4 book ai didi

详解python tkinter 图片插入问题

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解python tkinter 图片插入问题由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

通过tkinter.PhotoImage插入GIF, PGM/PPM格式的图片.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import tkinter
 
class Gui:
   def __init__( self ): 
     self .gui = tkinter.Tk()                        # create gui window
     self .gui.title( "Image Display" )                   # set the title of gui
     self .gui.geometry( "800x600" )                    # set the window size of gui
 
     img = tkinter.PhotoImage( file = "C:/Users/15025/Desktop/bear.gif" # read image from path
 
     label1 = tkinter.Label( self .gui,image = img)              # create a label to insert this image
     label1.grid()                            # set the label in the main window
 
     self .gui.mainloop()                         # start mainloop
 
main = Gui()

注意: img = tkinter.PhotoImage(file="C:/Users/15025/Desktop/bear.gif") 中的关键字file不能够省略,否则程序无法正常显示图片.

对于常用的PNG,与JPG格式的图片,我们需要从python image library(pillow)(PIL)导入Image与ImageTk模块来实现,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import tkinter
from PIL import Image
from PIL import ImageTk
 
 
class Gui:
   def __init__( self ): 
     self .gui = tkinter.Tk()                # create gui window
     self .gui.title( "Image Display" )           # set the title of gui
     self .gui.geometry( "800x600" )            # set the window size of gui
 
     load = Image. open ( "C:/Users/15025/Desktop/1.png" # open image from path
     img = ImageTk.PhotoImage(load)           # read opened image
 
     label1 = tkinter.Label( self .gui,image = img)      # create a label to insert this image
     label1.grid()                    # set the label in the main window
 
     self .gui.mainloop()                 # start mainloop
 
main = Gui()

然而在实际操作中,本人使用的是Anaconda spyder编译器,当我们在读入图像时程序出错后,再次运行程序就会导致image "pyimage1" doesn't exist错误,每次运行一次,数字就会增加1,如:image "pyimage2" doesn't exist。遇到此错误,可以直接在IPython控制台界面重启IPython内核即可,或者关闭编译器并重新打开.

看似我们已经完全实现了图片的插入,但是这种插入方法是存在隐患的,具体代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import tkinter as tk
from PIL import Image
from PIL import ImageTk
 
 
class Gui(tk.Tk):
   def __init__( self ):
     super ().__init__()
     self .title( "Figure dynamic show v1.01" )
     # self.geometry("1000x800+400+100")
     self .mainGui()
     # self.mainloop()
    
 
   def mainGui( self ):
     image = Image. open ( "C:/Users/15025/Desktop/1.png" )
     photo = ImageTk.PhotoImage(image)
     label = tk.Label( self , image = photo)
     label.image = photo     # in case the image is recycled
     label.grid()
    
 
main = Gui()
main.mainloop()

这里我们可以看到相比较上面的程序,我们将Gui界面的图像插入部分分离到另一个函数中,并且直接定义一个tkinter的类,这样做的好处是我们可以直接用self替代创建的主窗口界面,并且我们可以在不同的地方启动主循环,self.mainloop()和main.mainloop()任选一个即可。并且因为我们想要插入图片,所以我们可以省略指定Gui界面的尺寸,这样做的好处是会创建一个自适应图片大小的Gui界面。最重要的是我们可以看到多了一行代码label.image = photo,我们将选取的图片photo赋值给了label的属性对象image,如果没有这一行代码,图片便无法正常显示,这是因为python会自动回收不使用的对象,所以我们需要使用属性对象进行声明。 上述的程序隐患便是因为缺少了这一行代码.

至此,tkinter的图片插入可暂时告一段落.

到此这篇关于详解python tkinter 图片插入问题的文章就介绍到这了,更多相关python tkinter 图片插入内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/u011699626/article/details/108367300 。

最后此篇关于详解python tkinter 图片插入问题的文章就讲到这里了,如果你想了解更多关于详解python tkinter 图片插入问题的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com