Python使用tkinter编写图片浏览程序
代码要点:1)使用tkinter的Label显示图片;2)tkinter的PhotoImage支持的图片格式较少,使用pillow扩展库的Image和ImageTk弥补了这个缺点。
import os
import tkinter
import tkinter.messagebox
from PIL import Image, ImageTk
# 创建tkinter应用程序窗口
root = tkinter.Tk()
# 设置窗口大小和位置
root.geometry('430x650+40+30')
# 不允许改变窗口大小
root.resizable(False, False)
# 设置窗口标题
root.title('使用Label显示图片')
# 获取当前文件夹中所有图片文件列表
suffix = ('.jpg', '.bmp', '.png')
pics = [p for p in os.listdir('.') if p.endswith(suffix)]
current = -1
def changePic(flag):
'''flag=-1表示上一个,flag=1表示下一个'''
global current
new = current + flag
if new<0:
tkinter.messagebox.showerror('', '这已经是第一张图片了')
elif new>=len(pics):
tkinter.messagebox.showerror('', '这已经是最后一张图片了')
else:
# 获取要切换的图片文件名
pic = pics[new]
# 创建Image对象并进行缩放
im = Image.open(pic)
w, h = im.size
# 这里假设用来显示图片的Label组件尺寸为400*600
if w>400:
h = int(h*400/w)
w = 400
if h>600:
w = int(w*600/h)
h = 600
im = im.resize((w,h))
# 创建PhotoImage对象,并设置Label组件图片
im1 = ImageTk.PhotoImage(im)
lbPic['image'] = im1
lbPic.image = im1
current = new
# “上一张”按钮
def btnPreClick():
changePic(-1)
btnPre = tkinter.Button(root, text='上一张', command=btnPreClick)
btnPre.place(x=100, y=20, width=80, height=30)
# “下一张”按钮
def btnNextClick():
changePic(1)
btnNext = tkinter.Button(root, text='下一张', command=btnNextClick)
btnNext.place(x=230, y=20, width=80, height=30)
# 用来显示图片的Label组件
lbPic = tkinter.Label(root, text='test', width=400, height=600)
changePic(1)
lbPic.place(x=10, y=50, width=400, height=600)
# 启动消息主循环
root.mainloop()
运行截图:
Python使用tkinter编写图片浏览程序相关推荐
- 使用Python+tkinter编写电脑桌面放大镜程序
代码思路:首先全屏截图,然后在鼠标当前位置以小窗口进行二次截图,放大后再显示到鼠标左上角. 主要技术:全屏截图,指定区域截图,绑定鼠标事件,绘制图像. 建议大家照着代码敲一遍,然后运行试试.代码有一点 ...
- python的tkinter插入图片_详解python tkinter 图片插入问题
通过tkinter.PhotoImage插入GIF, PGM/PPM格式的图片. import tkinter class Gui: def __init__(self): self.gui=tkin ...
- python的tkinter插入图片_Python3 Tkinter基础 Text Photoimage 文本框中插入一张图片
镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发. ----------------------------- ...
- python的tkinter编写计算器_Python+Tkinter 实现计算器功能
1 #=================================================================================== 2 importtkint ...
- python的tkinter编写计算器_tkinter写的计算器
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 # -*- coding: cp936 -*- try: from tkinter import * import math, datetime from ...
- python socket recv超时_python使用多线程编写tcp客户端程序,你还没掌握吗?
这篇文章主要为大家详细介绍了python使用多线程编写tcp客户端程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在网上浏览的时候发现很多关于此题目的程序都只能接收数据,所以随便找了个程序研究 ...
- 下面哪个不是python常用的开发工具_Python程序员常用的IDE和其它开发工具
概述 "工欲善其事,必先利其器",如果说编程是程序员的手艺,那么IDE就是程序员的吃饭家伙了. IDE的全称是Integration Development Environment ...
- python练习册 每天一个小程序 第0013题
# -*-coding:utf-8-*- '''题目描述:用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-)地址:http://tieba.baidu.com/p/216623 ...
- Python爬虫 | Python爬虫获取女友图片
Python爬虫 | Python爬虫获取女友图片 前言 程序说明 二次元女友获取程序 观察网页结构 页面解析 创建图片保存路径 图片下载 格式转换 爬取结果展示 完整程序 前言 (又到了常见的无中生 ...
最新文章
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
- socket编程总结
- 类加载器-启动类加载器
- java io操作_Java 的IO操作(文件的读,写操作)
- STM32 应用程序加密的一种设计方案
- 【Linux】kali 2019.4 安装中文输入法
- POJ3420 Quad Tiling【矩阵快速幂】
- 安卓滚动字幕以及TextSwitcher、ImageSwitcher使用
- jquery radio设置选中_前端jQuery实战之 attr() 和 prop() 的区别
- 随机出题在线考试系统php_在线考试系统怎么实现自制题库随机出题
- 【网络】Padavan 路由器固件设置打印机服务器
- 记一次失败的机械键盘拆机换轴经历(含失败的经验总结)
- 【天光学术】新闻学论文:校园网络流行语传播社会热点问题的途径(节选)
- CC建模重建项目总是失败的原因
- 人工智能α-β树剪支图文
- win 下 docker 环境配置
- js处理json数组
- java string 加空格_java字符串加入空格
- 基于java的中文分词工具ANSJ
- 计算机二级试题aoa,计算机二级AOA理论题库
热门文章
- java异常断点数组_使用IDEA异常断点来定位java.lang.ArrayStoreException的问题
- html5圆形导航菜单,圆滑细腻,那些使用圆形导航菜单的漂亮网页设计
- 后勤管理系统_还在用人工进行宿舍后勤管理?超级适用的宿舍管理系统推荐
- c语言三元组稀疏矩阵的转置实验报告,稀疏矩阵快速转置 数据结构实验报告
- sparksql 操作hive_三十六、图解SparkSQL运行原理
- mysql创建gbk库_MYSQL创建utf-8和GBK格式数据库
- 护士计算机怎么报名,护士自考本科怎样报名
- spark如何防止内存溢出_什么叫内存溢出?内存泄漏的定义又是什么?使用中如何避免?...
- android dialogfragment 简单,使用DialogFragment
- 怎么保证读取最新数据_摄影师的数据存储有多难,怎么存储大量数据并保证安全高速防水防摔防尘?SanDisk...