首頁>技術>

1 說明:

=====

1.2 利用美女圖片的賞析和圖片的操作,熟悉python-tkinter的圖片顯示方法,增加學習興趣,程式碼和講解詳細,由淺入深,小白秒懂,值得收藏。

1.3 tkinter是python的自帶的GUI,目前本機python3.8自帶tkinter,與python2的tkinter可能使用上有一點不一樣,請注意。

1.4 圖片先賞析一下,8張圖片。

1.jpeg

2.jpeg

3.jpeg

4.jpeg

5.jpeg

6.jpeg

7.jpeg

8.jpeg

2 tkinter本身圖片顯示方法

===================

2.1 只能顯示png和gif格式的圖片,將3.jpeg,截圖為3.png,即可。

2.2 tk.Label法載入圖片,程式碼:

import tkinter as tkroot = tk.Tk()#建立一個圖片管理類#photo = tk.PhotoImage(file="/home/xgj/Desktop/tkinter-pic/3.jpeg")  #報錯photo = tk.PhotoImage(file="/home/xgj/Desktop/tkinter-pic/3.png")  #可以#把圖片整合到標籤類中imgLabel = tk.Label(root,image=photo)#四種方位:top, bottom, left, or rightimgLabel.pack(side=tk.TOP)tk.mainloop()

2.3 canvas法:不是最佳的。

from tkinter import *tk = Tk()#建立一個圖片管理類photo = PhotoImage(file="/home/xgj/Desktop/tkinter-pic/3.png")#畫布大小設定canvas = Canvas(tk,width=2000, height= 2000)#canvas = Canvas(tk)  #預設畫布大小不大,顯示不全#載入到canvas上,x和y是座標點,是圖片中心點的座標點#是圖片長寬的一半canvas.create_image(500,500,image = photo) canvas.pack()tk.mainloop()

3 讀取任意格式的圖片

================

3.1 採用PIL庫來實現

3.2 讀取1.jpeg,效果圖

3.3 程式碼,採用PIL庫法和tk.Label標籤法顯示圖片是最佳選擇!

import tkinter as tkfrom PIL import Image, ImageTkroot = tk.Tk()#用PIL圖片管理器讀取和管理圖片,可讀取任意格式的圖片image = Image.open("/home/xgj/Desktop/tkinter-pic/pic/1.jpeg")photo = ImageTk.PhotoImage(image)#把圖片整合到標籤類中imgLabel = tk.Label(root,image=photo)#四種方位:top, bottom, left, or rightimgLabel.pack(side=tk.TOP)tk.mainloop()

4 高階一點:

========

4.1 canvas圖片顯示並圖片移動,現將圖片大小修改為200和200,程式碼採用PIL法,此處省略。

4.2 效果圖

4.3 程式碼:

#第1步:匯入模組from tkinter import *#第2步:視窗相關設定#視窗初始化tk = Tk()#設定視窗的大小寬x高+偏移量(x和y座標點)tk.geometry('1000x1000+500+200')#設定視窗標題tk.title('楊冪圖片賞析')#第3步:讀取圖片和畫布顯示#建立一個圖片管理類,將圖片設定小一點200×200photo = PhotoImage(file="/home/xgj/Desktop/tkinter-pic/33.png")#畫布大小和背景顏色設定canvas = Canvas(tk,width=1000, height= 1000,bg='black')canvas.create_image(100,100,image = photo)  canvas.pack()#第4步:定義圖片移動函式#上下左右方向鍵def picMove(event):    if event.keysym == 'Left':        canvas.move(1,-5,0)    if event.keysym == 'Right':        canvas.move(1,5,0)    if event.keysym == 'Up':        canvas.move(1,0,-5)    if event.keysym == 'Down':        canvas.move(1,0,5)#第5步:方向鍵和功能繫結到畫布上canvas.bind_all('<KeyPress-Left>',picMove)canvas.bind_all('<KeyPress-Right>',picMove)canvas.bind_all('<KeyPress-Up>',picMove)canvas.bind_all('<KeyPress-Down>',picMove)#第6步:tk迴圈掛起tk.mainloop()

5 再高階一點:

===========

5.1 8張圖片動態切換,pic資料夾,裡面1~8.jpeg圖片

5.2 效果圖:

5.3 程式碼

#第1步:匯入模組from tkinter import *from PIL import Image,ImageTk#第2步:視窗初始化root=Tk()#設定視窗的大小寬x高+偏移量(x和y座標點)#root.geometry('1000x1000+500+200') #如果這個不設定,視窗大小就隨圖片大小自適應#來高階一點,僅僅設定視窗的位置,大小不設定root.geometry('+500+200') #設定視窗標題root.title('楊冪圖片動態賞析')#第3步:讀取圖片IMG=[]#8張圖加1for i in range(1,9):    im=Image.open('/home/xgj/Desktop/tkinter-pic/pic/'+str(i)+'.jpeg')    img=ImageTk.PhotoImage(im)    IMG.append(img)#第4步:將圖片顯示在label標籤上counter=0label=Label(root,image=IMG[counter])label.grid(row=1)#第5步:圖片更改函式def chimg():    global label    global counter    #8張圖減1    if counter<7:        counter+=1    else:        counter=0    label.destroy()    label=Label(root,image=IMG[counter])    label.grid(row=1)#第6步:按鈕設定和功能呼叫Button(root,text='換圖',width = 15, height = 2,bg='pink',command=chimg).grid(row=0)mainloop()

6 自動圖片定時切換

===============

6.1 效果圖

6.2 程式碼:

#coding=utf-8#匯入模組from tkinter import *#初始化Tktop = Tk()#標題名top.title('定時更換圖片')#僅僅設定視窗的位置,大小不設定top.geometry('+500+200') #注意png格式,自身圖片管理器讀取圖片,格式png和gifimg1 = PhotoImage(file='/home/xgj/Desktop/tkinter-pic/pic/1.png')img2 = PhotoImage(file='/home/xgj/Desktop/tkinter-pic/pic/2.png')img3 = PhotoImage(file='/home/xgj/Desktop/tkinter-pic/pic/3.png')img4 = PhotoImage(file='/home/xgj/Desktop/tkinter-pic/pic/4.png')#初始化ii = 1#圖片切換時間1000ms(1秒)chtime=1000#圖片切換函式定義def changeImage(i):    #python %取餘數    if i % 3 == 1:        label.configure(image = img1)        i = i + 1        label.after(chtime,changeImage,i)    elif i % 3 == 2:        label.configure(image=img2)        i = i + 1        label.after(chtime, changeImage,i)    else:        label.configure(image=img3)        i = i + 1        label.after(chtime, changeImage, i)#標籤定義和初始化顯示圖片1label = Label(top, image=img1)#標籤位置pack設定label.pack(fill=X,expand=1)#切換間隔時間,函式呼叫,ilabel.after(chtime,changeImage,i)#迴圈掛起top.mainloop()

超級齊全,分享處理。

8
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • C語言 | 判斷是否是閏年