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图像处理之反色实现方法
May 30 Python
python的keyword模块用法实例分析
Jun 30 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
python 同时运行多个程序的实例
Jan 07 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
python异步Web框架sanic的实现
Apr 27 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
May 07 Python
pycharm sciview的图片另存为操作
Jun 01 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
在python中实现导入一个需要传参的模块
May 12 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部分常见问题总结
2008/03/27 PHP
php变量作用域的深入解析
2013/06/03 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
分页栏的web标准实现
2011/11/01 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
js中url对象化管理分析
2017/12/29 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
详解python3实现的web端json通信协议
2016/12/29 Python
python实现八大排序算法(1)
2017/09/14 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
使用matplotlib画散点图的方法
2018/05/25 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
两只小狮子教学反思
2014/02/05 职场文书
三八妇女节活动总结
2014/05/04 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
先进党支部事迹材料
2014/12/24 职场文书
还款承诺书范本
2015/01/20 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript