亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

詳解python tkinter 圖片插入問題

瀏覽:7日期:2022-07-12 13:27:58

通過tkinter.PhotoImage插入GIF, PGM/PPM格式的圖片。

import tkinterclass 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 mainloopmain = Gui()

注意: img = tkinter.PhotoImage(file='C:/Users/15025/Desktop/bear.gif') 中的關(guān)鍵字file不能夠省略,否則程序無法正常顯示圖片。

對于常用的PNG,與JPG格式的圖片,我們需要從python image library(pillow)(PIL)導(dǎo)入Image與ImageTk模塊來實現(xiàn),代碼如下:

import tkinterfrom PIL import Imagefrom PIL import ImageTkclass 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 mainloopmain = Gui()

然而在實際操作中,本人使用的是Anaconda spyder編譯器,當(dāng)我們在讀入圖像時程序出錯后,再次運行程序就會導(dǎo)致image 'pyimage1' doesn’t exist錯誤,每次運行一次,數(shù)字就會增加1,如:image 'pyimage2' doesn’t exist。遇到此錯誤,可以直接在IPython控制臺界面重啟IPython內(nèi)核即可,或者關(guān)閉編譯器并重新打開。

看似我們已經(jīng)完全實現(xiàn)了圖片的插入,但是這種插入方法是存在隱患的,具體代碼如下:

import tkinter as tkfrom PIL import Imagefrom PIL import ImageTkclass 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界面的圖像插入部分分離到另一個函數(shù)中,并且直接定義一個tkinter的類,這樣做的好處是我們可以直接用self替代創(chuàng)建的主窗口界面,并且我們可以在不同的地方啟動主循環(huán),self.mainloop()和main.mainloop()任選一個即可。并且因為我們想要插入圖片,所以我們可以省略指定Gui界面的尺寸,這樣做的好處是會創(chuàng)建一個自適應(yīng)圖片大小的Gui界面。最重要的是我們可以看到多了一行代碼label.image = photo,我們將選取的圖片photo賦值給了label的屬性對象image,如果沒有這一行代碼,圖片便無法正常顯示,這是因為python會自動回收不使用的對象,所以我們需要使用屬性對象進(jìn)行聲明。 上述的程序隱患便是因為缺少了這一行代碼。

至此,tkinter的圖片插入可暫時告一段落。

到此這篇關(guān)于詳解python tkinter 圖片插入問題的文章就介紹到這了,更多相關(guān)python tkinter 圖片插入內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲国产精品欧美综合 | 一级做a| ntr中文字幕亚洲综合 | 免费视频精品一区二区三区 | 最新国产中文字幕 | 精品国产一级在线观看 | 又粗又大又爽 真人一级毛片 | 国产日韩欧美亚洲综合在线 | 91在线免费视频 | 欧美日韩国产亚洲一区二区 | 亚洲日韩欧美一区二区在线 | 99久久精品自在自看国产 | heyzo北条麻妃在线播放 | 视频免费1区二区三区 | 一级免费片| 337q日本大胆欧美人术艺术 | 日韩一级片免费在线观看 | 亚洲欧美国产精品第1页 | 日本无翼乌邪恶大全彩h污污 | 国产精品免费综合一区视频 | 国产亚洲精品综合在线网址 | 99免费视频 | 男女一级特黄a大片 | 一级性黄色片 | 久久精品视频久久 | 国产精品亚洲专区一区 | 国产精品视频大全 | 丁香婷婷亚洲六月综合色 | 日本视频中文字幕一区二区 | 国精品一区二区三区 | 久久我们这里只有精品国产4 | 五月天久久婷婷 | 国产在线观看91精品亚瑟 | 亚洲一区二区三区福利在线 | 中文字幕一区二区在线观看 | a级毛片免费播放 | 国产一级免费在线观看 | 手机看片日韩国产 | 青青操在线免费观看 | 欧美一级特黄aa大片婷婷 | 日本精品中文字幕在线播放 |