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之有容乃大的list(1)
Sep 14 Python
python字符串的常用操作方法小结
May 21 Python
tensorflow实现简单的卷积网络
May 24 Python
python3.4爬虫demo
Jan 22 Python
Python静态类型检查新工具之pyright 使用指南
Apr 26 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Python 硬币兑换问题
Jul 29 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
Python3监控疫情的完整代码
Feb 20 Python
python2.7使用scapy发送syn实例
May 05 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/04/14 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
python实现excel读写数据
2021/03/02 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
python中关于数据类型的学习笔记
2020/07/19 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
python文件路径操作方法总结
2020/12/21 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
一年级评语大全
2014/04/23 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS