视频、音乐播放器大家都听说过,那么图片播放器呢
原標題:應用Tkinter模塊制作一個圖片播放器
今天,在看視頻的同時,想了一下,既然視頻、音樂都有自己的播放器,那么圖片呢?是否有自己的播放器呢?既然沒有,為什么不做一個呢?
文章目錄
- 原標題:應用Tkinter模塊制作一個圖片播放器
- 1.了解Tkinter模塊
- 2.怎樣實現播放下一張圖片效果
- 3.最終代碼
- 3.1 代碼:
- 4.總結
1.了解Tkinter模塊
Tkinter是Python比較常見的用來做圖形界面的模塊,自身不需要安裝,并且容易使用。
今天我們要知道的它的幾個組件:
Label組件:是用于在界面上輸出描述的標簽。
Button組件:是用于實現一個按鈕,它的絕大多數選項跟Label組件是一樣的。不過,Button組件有一個Label組件實現不了的功能,那就是可以接收用戶的信息。Button組件有一個command選項,用于指定一個函數或方法,當用戶單擊按鈕的時候,Tkinter就會自動地去調用這個函數或方法了。
Entry組件:是平時所說的輸入框。輸入框是程序打交道的一個途徑,例如程序要求你輸入賬號密碼,那么它就需要提供兩個輸入框給你,用于接收密碼的輸入框還會用星號將實際輸入的內容隱藏起來。
Text組件:用于顯示和處理多行文本,在Tkinter的所有組件中,Text組件顯得異常強大和靈活,它適用于處理多種任務。
2.怎樣實現播放下一張圖片效果
代碼如下:
import tkinter as tkroot=tk.Tk() root.geometry("300x300") photo=tk.PhotoImage(file='D:/QQ瀏覽器下載/2.gif') text1=tk.Text(root) text1.pack() text1.image_create(tk.END,image=photo) text1.update() def delete():text1.delete('0.0',tk.END)text1.update() button=tk.Button(root,text='按鈕',command=delete) button.pack()root.mainloop()tkinter上顯示圖片的格式必須是.gif 格式的,否則會報錯,上面代碼基本功能是通過按一個按鈕實現圖片被刪除,這個時候我們只要在插入一張新的圖片就可以顯示出播放下一張圖片的效果了。
注意:對于讀者而言,想要運行一下上面程序,記得改動一下上面的圖片的絕對路徑。
3.最終代碼
為了使圖形界面顯示更加美觀,我這里使用了tkinter下面的configure()方法,把界面整體顏色設置為黑色。
import tkinter as tkroot=tk.Tk() root.configure(background='black') # 設置圖形界面的背景為黑色root.mainloop()
這樣整體顏色就變成了黑色了。
既然圖形界面背景為黑色,那么顯示的字體顏色就必須為白色。
我這里設置了圖形界面的大小,這里的參數是根據我自己電腦屏幕大小來設置,不同人的電腦屏幕大小也許是不同,可以用QQ截圖工具測試一下你的電腦屏幕大小喔!
既然是圖片播放器,那么怎么少得了死循環呢?不然,圖片一下子就播放完畢了,只有通過死循環,這樣就可以看上去有很多圖片一樣。
while True: # 一個死循環for i in range(len(list_1)):if fileName in list_1[i]: # 從第幾張圖片開始播放for j in range(i,len(list_1)):photo = tk.PhotoImage(file=list_1[j])text1.image_create(tk.END, image=photo)text1.update()time.sleep(5)text1.delete('1.0','1.end')不過,圖片尺寸還是必須有嚴格規定的,否則一些圖片只能顯示出部分區域。
要下載圖片可以看我這篇博文喔:python多線程爬蟲下載圖片
既然tkinter要求顯示的圖片必須是 .gif格式,那么我們就把它轉換成 .gif格式就行了。
既然改的是圖片格式,那么這個文件夾下面就不能有 不是圖片格式的文件,否則程序會出錯。
3.1 代碼:
import tkinter as tk from tkinter import filedialog import time import osroot=tk.Tk() root.geometry("1920x1040") # 圖形界面的大小 root.title('-->圖片播放器') # 標題 root.configure(background='black') # 設置圖形界面的背景為黑色label1=tk.Label(root,text='圖片文件',bg='black',font=('楷體',13,'bold'),fg='white') label1.grid(row=0,column=0)v1=tk.StringVar() entry1=tk.Entry(root,textvariable=v1,width=35) entry1.grid(row=0,column=1,ipadx=40)def callback():fileName=filedialog.askopenfilename()entry1.insert(tk.INSERT, fileName)# print(fileName) # 開始播放的第一張圖片filepath=fileName[:fileName.rfind('/')]# print(filepath) # 這張圖片的文件夾list_1=[filepath+'/{}'.format(i) for i in os.listdir(filepath)]while True: # 一個死循環for i in range(len(list_1)):if fileName in list_1[i]: # 從第幾張圖片開始播放for j in range(i,len(list_1)):photo = tk.PhotoImage(file=list_1[j])text1.image_create(tk.END, image=photo)text1.update()time.sleep(5)text1.delete('1.0','1.end')button1=tk.Button(root,text='瀏覽',bg='black',font=('楷體',13,'bold'),fg='white',command=callback) button1.grid(row=0,column=2)text1=tk.Text(root,width=210,height=55) text1.grid(row=1,columnspan=3,padx=20)root.mainloop()運行結果:
20200415_091215.mp4
4.總結
代碼是自己昨天和今天編寫出來的,希望看了的讀者能給我點一個小小的贊,我一定會更加努力,創造出更好的文章的。
總結
以上是生活随笔為你收集整理的视频、音乐播放器大家都听说过,那么图片播放器呢的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Idea+JUnit+JUnitGene
- 下一篇: 想进行快速钢网设计,还能保证钢网质量?