相册播放器(一个浏览多张图片的应用)大家应该都不陌生。本文将使用Python编写一个简单的相册播放器,有兴趣的可以了解一下。
大家好,我是小f。
相册播放器(一个浏览多张图片的应用)大家应该都不陌生。
当然还有视频和音乐播放器,也是用来播放多个视频和音乐文件的。
在Win10系统下,打开一张【照片】的图片,可以浏览图片所在文件夹的其他图片。
从上图我们可以看到还有很多其他的功能,比如图像裁剪,编辑,打印。
今天小F就带大家学习一个用Python制作相册播放器的实用项目。
嗯,当然不如系统本身好。只是学习而已。
默认情况下,您可以每5秒钟切换一张图片。单击前进按钮快速切换到下一张图片。
主要使用Pygame库创建图形界面。
还有tkinter库,因为要添加图片文件夹,使用Tkinter的filedialog快速选择本地文件夹。
#安装
pip安装游戏
pip安装tkinter
好了,接下来给大家介绍一下。
导入相关库
导入操作系统
导入系统
导入全球
导入pygame
导入tkinter
导入os.path
从按钮导入按钮
从tkinter导入文件对话框
初始化,设置图形界面的宽度为1600,高度为900。
添加标题栏图表和标题栏文字,以及中文字体。这里用的是宋体,所以界面看起来有点丑。
最后设置文字背景色和背景图片
#初始化
pygame.init()
#设置宽度、高度和标题栏
宽度,高度=1600,900
SCREEN=pygame.display.set_mode((宽度,高度))
Pygame.display.set_caption('专辑播放器|小F 2022 ')
#添加中文字体
def bold_font(size):
os.chdir(sys.path[0])
返回py game . font . font(' assets/sim hei . TTF ',size)
def regular_font(size):
返回pygame.font.SysFont('simhei ',size)
#设置文本背景颜色,背景图片
BASE_TEXT_COLOR='#6fffe9 '
BACKGROUND _ IMAGE=py game . IMAGE . load(' assets/BACKGROUND . png ')
SCREEN.blit(BACKGROUND_IMAGE,(0,0))
#更新
pygame.display.update()
#设置标题栏图标
WINDOW _ ICON=py game . image . load(' assets/WINDOW _ ICON . png ')
pygame . display . set _ ICON(WINDOW _ ICON)
效果如下,是空的。
加载部分按钮的图标
#设置按钮背景颜色、后退按钮、暂停按钮、播放按钮、前进按钮和加载新专辑按钮。
MAIN _ MENU _ BUTTON _ BACKGROUND=py game . image . load(' assets/MAIN _ MENU _ BUTTON _ BG . png ')
REWIND _ ICON _ SURFACE=py game . image . load(' assets/REWIND _ ICON . png ')
PAUSE _ ICON _ SURFACE=py game . image . load(' assets/PAUSE _ ICON . png ')
PLAY _ ICON _ SURFACE=py game . image . load(' assets/PLAY _ ICON . png ')
SEEK _ ICON _ SURFACE=py game . image . load(' assets/SEEK _ ICON . png ')
LOAD _ NEW _ ALBUM _ SURFACE=py game . image . LOAD(' assets/LOAD _ NEW _ ALBUM _ icon . png ')
设置按钮背景颜色,后退按钮,暂停按钮,播放按钮,前进按钮和加载新专辑按钮。
其次定义各个按钮的功能函数
#加载按钮功能
定义load_button():
#打开文件管理器并选择文件夹。
filedialogwindow=tkinter。Tk()
filedialogwindow.withdraw()
文件路径=file dialog . ask directory(title='选择您的相册')
filedialogwindow.destroy()
相册_播放器(文件路径)
#关闭按钮
def quit_button()。
pygame.quit()
sys.exit()
#后退按钮
def rewind_button(当前图像索引):
如果当前图像索引为0:
当前图像索引-=1
倒带按钮按下=真
返回rewind_button_pressed,current_image_index
#前进按钮
def seek_button(当前图像索引,图像名称):
如果当前图像索引为1 len(图像名称):
当前图像索引=1
seek_button_pressed=True
返回seek_button_pressed,当前图像_索引
#播放按钮
def播放按钮():
暂停=假
未暂停=真
返回暂停,未暂停
#暂停按钮
def暂停_按钮():
暂停=真
未暂停=假
返回暂停,未暂停
“加载”按钮可添加相册;
关闭按钮退出播放器;
向后按钮,向后切换一张图片;
向前按钮,向前切换一张图片;
播放按钮,开始播放相册中的图片;
暂停按钮,暂停相册图片的播放;
设置主界面,包含主页标题栏,加载按钮,关闭按钮文字属性。
同时还需要监听鼠标点击事件
# 主界面
极好的主菜单():
# 主页标题栏
TITLE _ TEXT _ SURFACE=bold _ font(120).呈现('相册播放器,True,BASE_TEXT_COLOR)
标题_文本_ RECT=标题_文本_表面。get _ rect(center=(WIDTH/2175))
SCREEN.blit(标题文本表面,标题文本RECT)
# 加载按钮
LOAD_BUTTON=Button(
surface=MAIN _ MENU _ BUTTON _ BACKGROUND,pos=(WIDTH/2415),text_input='加载,
font=bold_font(100),base_color=BASE_TEXT_COLOR,hovering _ color=' white '
)
# 关闭按钮
QUIT_BUTTON=Button(
surface=MAIN _ MENU _ BUTTON _ BACKGROUND,pos=(WIDTH/2585),text_input='关闭,
font=bold_font(100),base_color=BASE_TEXT_COLOR,hovering _ color=' white '
)
虽然正确:
# 监听鼠标点击事件
当前_鼠标_位置=py游戏。老鼠。get _ pos()
加载_按钮。更新(屏幕)
退出_按钮.更新(屏幕)
# 根据鼠标点击情况,是否点击右上角的关闭
对于pygame.event.get()中的事件:
if event.type==pygame .退出:
pygame.quit()
sys.exit()
# 根据鼠标点击情况,点击加载或关闭按钮
if event.type==pygame .鼠标按钮按下:
如果加载_按钮.检查_输入(当前_鼠标_位置):
加载按钮()
如果退出_按钮.检查_输入(当前_鼠标_位置):
退出按钮()
# 当鼠标放置在按钮上,按钮颜色发生改变
改变颜色(当前鼠标位置)
退出按钮。改变颜色(当前鼠标位置)
pygame.display.update()
根据鼠标点击情况,是否点击右上角的关闭;
根据鼠标点击情况,点击加载或关闭按钮;
当鼠标放置在按钮上,按钮颜色发生改变,变成白色。点击关闭,应用会关闭掉。
最后是相册播放器的功能函数,设置每5s切换一张图片。
此外还要调整图片的尺寸大小,方便在播放器中查看
# 相册播放器功能函数
定义相册_播放器(文件夹_路径):
SCREEN.blit(BACKGROUND_IMAGE,(0,0))
图像文件路径=[]
image_names=[]
当前图像索引=0
暂停=假
未暂停=假
seek_button_pressed=False
倒带按钮按下=假
# 添加加载按钮后,得到的图片文件夹路径
os.chdir(文件夹路径)
对于环球环球中的文件(' * '):
current _ image _ path=f"{文件夹路径}/{文件} "
# 图片路径列表
图像文件路径附加(当前图像路径)
# 图片名称列表
image _ names.append(文件)
# 向后按钮
倒带按钮=按钮(
surface=REWIND_ICON_SURFACE,pos=(WIDTH/2-100,HEIGHT-150),text_input=' ',
font=bold_font(100),base_color=BASE_TEXT_COLOR,hovering _ color=' white '
)
# 暂停按钮
PAUSE_BUTTON=Button(
surface=PAUSE_ICON_SURFACE,pos=(WIDTH/2,HEIGHT-150),text_input=' ',
font=bold_font(100),base_color=BASE_TEXT_COLOR,hovering _ color=' white '
)
# 播放按钮
播放按钮=按钮(
surface=PLAY_ICON_SURFACE,pos=(WIDTH/2,HEIGHT-150),text_input=' ',
font=bold_font(100),base_color=BASE_TEXT_COLOR,hovering _ color=' white '
)
# 向前按钮
SEEK_BUTTON=Button(
surface=SEEK_ICON_SURFACE,pos=(WIDTH/2 100,HEIGHT-150),text_input=' ',
font=bold_font(100),base_color=BASE_TEXT_COLOR,hovering _ color=' white '
)
# 加载新相册按钮
LOAD_NEW_ALBUM_BUTTON=Button(
surface=LOAD_NEW_ALBUM_SURFACE,pos=(WIDTH-325,HEIGHT-150),text_input=' ',
font=bold_font(100),base_color=BASE_TEXT_COLOR,hovering _ color=' white '
)
# 获取时间,设置每5s切换一张图片
previous _ time=py游戏。时间。get _ ticks()
冷却时间=5000
# 设置图片名称文字属性
photo _ title _ text _ surface=bold _ font(90).渲染(图像名称[当前图像索引],True,BASE_TEXT_COLOR)
照片_标题_文本_矩形=照片_标题_文本_表面。get _ rect(center=(WIDTH/2,150))
# 图片张图显示
image _ count _ text _ surface=regular _ font(80).渲染(f '图片{ current _ image _ index 1 }/{ len(image _ names)} ',True,BASE_TEXT_COLOR)
image _ count _ text _ rect=image _ count _ text _ surfaceget _ rect(center=(300,755))
# 获取图片宽高属性,窗口显示不合适,调整大小
new _ image _ surface=pygame。形象。加载(图像文件路径[当前图像索引])
如果新图像表面。get _ height()500:
new _ image _ surface=py游戏。转变。缩放(新图像表面,(新图像表面。getwidth()*(500/new _ image _ surface。get _ height()),500))
elif新图像表面。get _ width()800:
new _ image _ surface=py游戏。转变。缩放(新图像表面,(800,新图像表面。get _ height()*(800/new _ image _ surface。get _ width()))
新图像矩形=新图像表面。get _ rect(center=(宽度/2,高度/2))
SCREEN.blit(新图像表面,新图像矩形)
屏幕。blit(照片标题文本表面,照片标题文本矩形)
屏幕。blit(图像计数文本表面,图像计数文本矩形)
倒带_按钮.更新(屏幕)
暂停_按钮。更新(屏幕)
SEEK_BUTTON.update(屏幕)
加载_新_相册_按钮。更新(屏幕)
pygame.display.update()
# 监听鼠标点击事件
虽然正确:
对于pygame.event.get()中的事件:
# 根据鼠标点击情况,是否点击右上角的关闭
if event.type==pygame .退出:
pygame.quit()
sys.exit()
if event.type==pygame .鼠标按钮按下:
# 根据鼠标点击情况,做向前,向后,暂停,开始等切换图片操作
当前_鼠标_位置=py游戏。老鼠。get _ pos()
如果倒带_按钮。检查输入(当前_鼠标_位置):
倒带按钮已按下,当前图像索引=倒带按钮(当前图像索引)
if SEEK _ button。检查输入(当前鼠标位置):
seek_button_pressed,current _ image _ index=seek _ button(当前图像索引,图像名称)
如果暂停:
如果播放_按钮.检查_输入(当前_鼠标_位置):
暂停,未暂停=播放按钮()
否则:
如果暂停_按钮.检查_输入(当前_鼠标_位置):
暂停,未暂停=暂停按钮()
if LOAD _ NEW _ ALBUM _ button。检查输入(当前鼠标位置):
加载按钮()
current _ time=py游戏。时间。get _ ticks()
# 切换图片,一定时间、点击向后按钮、点击向前按钮、点击开始按钮
如果当前时间-先前时间=冷却或倒带按钮按下或搜索按钮按下或暂停或未暂停:
未暂停=假
如果当前图像索引镜头(图像文件路径)-1且未按下seek_button_pressed且未按下倒带按钮已按下且未暂停:
当前图像索引=1
SCREEN.blit(BACKGROUND_IMAGE,(0,0))
倒带_按钮.更新(屏幕)
如果暂停:
播放_按钮。更新(屏幕)
否则:
暂停_按钮。更新(屏幕)
SEEK_BUTTON.update(屏幕)
加载_新_相册_按钮。更新(屏幕)
new _ image _ surface=pygame。形象。加载(图像文件路径[当前图像索引])
如果新图像表面。get _ height()500:
new _ image _ surface=py游戏。转变。缩放(新图像表面,(新图像表面。getwidth()*(500/new _ image _ surface。get _ height()),500))
elif新图像表面。get _ width()800:
new _ image _ surface=py游戏。转变。缩放(新图像表面,(800,新图像表面。get _ height()*(800/new _ image _ surface。get _ width()))
新图像矩形=新图像表面。get _ rect(center=(宽度/2,高度/2))
SCREEN.blit(新图像表面,新图像矩形)
photo _ title _ text _ surface=bold _ font(90).渲染(图像名称[当前图像索引],True,BASE_TEXT_COLOR)
照片_标题_文本_矩形=照片_标题_文本_表面。get _ rect(center=(WIDTH/2,150))
屏幕。blit(照片标题文本表面,照片标题文本矩形)
image _ count _ text _ surface=regular _ font(80).渲染(f '图片{ current _ image _ index 1 }/{ len(image _ names)} ',True,BASE_TEXT_COLOR)
image _ count _ text _ rect=image _ count _ text _ surfaceget _ rect(center=(300,755))
屏幕。blit(图像计数文本表面,图像计数文本矩形)
pygame.display.update()
previous _ time=py游戏。时间。get _ ticks()
seek_button_pressed=False
倒带按钮按下=假
同样也有监听鼠标点击事件,根据鼠标点击情况,做向前、向后、暂停、开始等切换图片操作。
最终效果如下
到此这篇关于基于计算机编程语言制作一个相册播放器的文章就介绍到这了,更多相关计算机编程语言相册播放器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。