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中比较特别的除法运算和幂运算介绍
Apr 05 Python
Python 通过URL打开图片实例详解
Jun 01 Python
python MySQLdb使用教程详解
Mar 20 Python
使用python编写udp协议的ping程序方法
Apr 22 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
Django forms组件的使用教程
Oct 08 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
Jan 08 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 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中通过curl检测页面是否被百度收录
2013/09/27 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
layui文件上传实现代码
2017/05/20 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
js实现div色块碰撞
2020/01/16 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
python实现顺序表的简单代码
2018/09/28 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
python openpyxl使用方法详解
2019/07/18 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
奶茶专卖店创业计划书
2014/01/18 职场文书
留学推荐信范文
2014/05/10 职场文书
生日寿星公答谢词
2015/09/29 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书