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实现把回车符\r\n转换成\n
Apr 23 Python
python实现可以断点续传和并发的ftp程序
Sep 13 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
详解Django 中是否使用时区的区别
Jun 14 Python
Python全局变量与局部变量区别及用法分析
Sep 03 Python
python redis 删除key脚本的实例
Feb 19 Python
django框架使用方法详解
Jul 18 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
django实现支付宝支付实例讲解
Oct 17 Python
python基于property()函数定义属性
Jan 22 Python
Django haystack实现全文搜索代码示例
Nov 28 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语法(2)
2006/10/09 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
php导入导出excel实例
2013/10/25 PHP
php中in_array函数用法分析
2014/11/15 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
js实现弹窗猜数字游戏
2020/11/26 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
Python文本相似性计算之编辑距离详解
2016/11/28 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
python脚本调用iftop 统计业务应用流量的思路详解
2019/10/11 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
年底个人总结范文
2015/03/10 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
Python实现byte转integer
2021/06/03 Python
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
golang生成并解析JSON
2022/04/14 Golang