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 self,cls,decorator的理解
Jul 13 Python
tornado框架blog模块分析与使用
Nov 21 Python
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
python转换摩斯密码示例
Feb 16 Python
python实现随机密码字典生成器示例
Apr 09 Python
详解Python time库的使用
Oct 10 Python
python的scipy实现插值的示例代码
Nov 12 Python
python微信公众号开发简单流程实现
Mar 09 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
python 提取html文本的方法
May 20 Python
python b站视频下载的五种版本
May 27 Python
Python+tkinter实现高清图片保存
Mar 13 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
老照片 - 几十年前的收音机与人
2021/03/02 无线电
PHP 数组遍历顺序理解
2009/09/09 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
js函数调用的方式
2014/05/06 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
python中的格式化输出用法总结
2016/07/28 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
使用requests库制作Python爬虫
2018/03/25 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
Django REST framework内置路由用法
2019/07/26 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
.net软件工程师面试题
2015/03/31 面试题
可靠的数据流传输TCP
2016/03/15 面试题
青年志愿者事迹材料
2014/02/07 职场文书
学生操行评语大全
2014/04/24 职场文书
高中教师个人总结
2015/02/10 职场文书