python tkiner实现 一个小小的图片翻页功能的示例代码


Posted in Python onJune 24, 2020

具体代码如下所示:

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实现 一个小小的图片翻页功能的示例代码

点击图片展示之后

python tkiner实现 一个小小的图片翻页功能的示例代码

上一页下一页可以用,再次点击图片展示

python tkiner实现 一个小小的图片翻页功能的示例代码

总结

到此这篇关于python tkiner实现 一个小小的图片翻页功能的文章就介绍到这了,更多相关python tkiner实现图片翻页内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python os模块学习笔记
Jun 21 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
Python实现简单http服务器
Apr 12 Python
python中的for循环
Sep 28 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
python常用函数与用法示例
Jul 02 Python
Python配置文件处理的方法教程
Aug 29 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 Python
pycharm代码删除恢复的方法
Jun 26 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 #Python
基于pytorch中的Sequential用法说明
Jun 24 #Python
django haystack实现全文检索的示例代码
Jun 24 #Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 #Python
python使用自定义钉钉机器人的示例代码
Jun 24 #Python
pytorch中的weight-initilzation用法
Jun 24 #Python
pytorch查看模型weight与grad方式
Jun 24 #Python
You might like
php实现建立多层级目录的方法
2014/07/19 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
5个很好的Python面试题问题答案及分析
2018/01/19 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
sklearn+python:线性回归案例
2020/02/24 Python
通过实例解析Python return运行原理
2020/03/04 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
大学毕业生的自我鉴定
2013/11/30 职场文书
数控技术专科生自我评价
2014/01/08 职场文书
联谊活动策划书
2014/01/26 职场文书
英语教研活动总结
2014/07/02 职场文书
单位综合评价意见
2015/06/05 职场文书
升学宴学生致辞
2015/07/27 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
python中的sys模块和os模块
2022/03/20 Python