如何用python tkiner實現圖片翻頁功能?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
具體代碼如下所示:
import tkinter as tk
import tkinter.messagebox
import copy
import os,sys
def get_picture(dirs):
'''獲得所有圖片'''
picture_list = []
for dir,dir_abs,files in os.walk(dirs):
for file in files:
if file.endswith('.gif'):
picture_list.append(os.path.join(dir,file))
return picture_list
class Window:
button_list = []
object_list = []
pictures = get_picture(picture_path)
file = pictures[0]
is_show = True
index = 0
image_file = ''
def __init__(self):
'''創建窗口和frame'''
self.window = tk.Tk()
self.window.title('my window')
self.window.geometry('600x600')
self.frame = tk.Frame(self.window)
self.frame.pack()
self.frame_l = tk.Frame(self.frame)
self.frame_r = tk.Frame(self.frame)
self.frame_l.pack(side='left')
self.frame_r.pack(side='right')
self.frame_ll = tk.Frame(self.frame_r)
self.frame_rr = tk.Frame(self.frame_r)
self.frame_ll.pack(side='left')
self.frame_rr.pack(side='right')
def next_picture(self):
'''下一張圖片'''
self.index = self.pictures.index(self.file)
self.index += 1
if self.index < len(self.pictures):
self.checkout_button()
self.file = self.pictures[self.index]
self.create_canvas(self.file)
else:
self.index = len(self.pictures) - 1
tkinter.messagebox.showinfo('提示', '已近是最后一張了')
def checkout_button(self):
'''判斷列表中是否只有button對象'''
object_list_copy = copy.copy(self.object_list)
for ob in self.object_list:
if ob in self.button_list:
pass
else:
b = object_list_copy.pop(self.object_list.index(ob))
b.destroy()
self.object_list = object_list_copy
def pre_picture(self):
'''上一頁'''
self.index = self.pictures.index(self.file)
self.index -= 1
if self.index >= 0:
self.checkout_button()
self.file = self.pictures[self.index]
self.create_canvas(self.file)
else:
self.index = 0
tkinter.messagebox.showinfo('提示', '已經是第一張了')
def show_picture(self):
'''展示圖片和翻頁按鈕'''
self.file = self.pictures[0]
if self.is_show:
self.is_show = False
self.create_canvas(self.file)
button1 = tk.Button(self.frame_ll, text='上一張', width=10, height=1, command=self.pre_picture)
button1.pack()
button2 = tk.Button(self.frame_rr, text='下一張', width=10, height=1, command=self.next_picture)
button2.pack()
self.button_list.append(button1)
self.button_list.append(button2)
self.object_list.extend(self.button_list)
else:
self.is_show = True
while self.object_list:
o = self.object_list.pop()
o.destroy()
def new_button(self):
'''創建展示按鈕'''
tk.Button(self.frame_l, text='圖片展示', width=10, height=1, command=self.show_picture).pack()
def create_canvas(self,file):
'''用畫布展示圖片'''
self.image_file = tk.PhotoImage(file=file)
canvas = tk.Canvas(self.frame_r, height=500, width=600)
canvas.create_image(1, 1, anchor='nw', image=self.image_file)
canvas.pack()
self.object_list.append(canvas)
def run(self):
'''主程序調用'''
self.window.mainloop()
if __name__ == '__main__':
w = Window()
w.new_button()
w.run()樣式如下:有點丑,不過功能沒毛病,就先這么著吧~~~

點擊圖片展示之后

上一頁下一頁可以用,再次點擊圖片展示

關于如何用python tkiner實現圖片翻頁功能問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。