当前位置: 首页 > wzjs >正文

青岛网站设计公司联系方式百度搜索工具

青岛网站设计公司联系方式,百度搜索工具,提高网站权重工具,白云区建网站公司当我们的python GuI在开发时。经常会用到图片作为背景,但是在打包后再启动GUI后却发现:原先调试时好端端的背景图片竟然不翼而飞或者直接报错。这说明图片没有被pyinstaller一起打包…… 要解决这个问题很简单,就是更改图片的存储方式。 tk…

         当我们的python GuI在开发时。经常会用到图片作为背景,但是在打包后再启动GUI后却发现:原先调试时好端端的背景图片竟然不翼而飞或者直接报错。这说明图片没有被pyinstaller一起打包……

要解决这个问题很简单,就是更改图片的存储方式。

tkinter设置图片为背景

        首先,无论如何,要想导入并在GUI中显示图片,我们都要用到pilllow这个库

pillow获取方式

pip install pillow

正常显示思路

  1.  使用pillow Image下的open方法读取给定路径下(一般是同级目录,只需要指定文件名)的图片
  2.  使用pillow的ImageTk(专门用作于tkinter交互的图像处理工具)将其转换为tkinter类型图片
  3.  在tkinter中创建一个和窗口一样大的canvas将image传入作为背景图片

代码

import tkinter as tk
################################
#使用pillow读取显示图片
from PIL import Image,ImageTk
################################
window_width,window_height=500,300
root=tk.Tk()
image=Image.open('背景.jpg').resize((window_width,window_height))
backgroud_image=ImageTk.PhotoImage(image)
root.title('测试')
root.geometry(f'{window_width}x{window_height}')
main_canvas=tk.Canvas(root,width=window_width,height=window_height)
main_canvas.create_image(0,0,anchor='nw',image=backgroud_image)
main_canvas.pack(fill='both',expand=True)
root.mainloop()

效果: 

这是按照上述思路运行代码后的效果,接下来我们使用pyinstaller试着将其打包成一个exe文件

打包方法可以见这篇文章:https://blog.csdn.net/weixin_73953650/article/details/146621947?fromshare=blogdetail&sharetype=blogdetail&sharerId=146621947&sharerefer=PC&sharesource=weixin_73953650&sharefrom=from_linkhttps://blog.csdn.net/weixin_73953650/article/details/146621947?fromshare=blogdetail&sharetype=blogdetail&sharerId=146621947&sharerefer=PC&sharesource=weixin_73953650&sharefrom=from_link

 打包后,我们运行该exe文件,报错:

报错原因很简单,就是无法找到背景.jpg这个文件,这是因为pyinstaller只能用来打包py文件

解决思路

        解决上述问题的办法很多,但是个人认为最简单的一种便是把图片转换成py文件即可,到这儿有小伙伴可能会问怎么把图片写入到py文件中呢?

        嘿嘿,这里我们其实只需要使用base64将图片encode成字符串,便可以实现上述操作,在用的时候将其从存储这个base64字符串的py文件中导入,然后再decode一下成bytes便可正常使用了……

图像转换为base64字符串

import base64
image=open('背景.jpg','rb')
base64_string=base64.b64encode(image.read())
image.close()
print(base64_string)

使用上述几行代码便可以实现将图片转换为base64_string

结果:

将base64字符串写入py文件 

写入文件很简单,只需在上述代码中使用open语句完成即可

import base64
image=open('背景.jpg','rb')
base64_string=base64.b64encode(image.read())
image.close()
with open('BackGround.py','w') as py:py.write(f'img={base64_string}')

结果:

说明:

  1. 千万不要手贱,随便增删上述结果中的任何一个字符,否则无法转回成图像!
  2. 在写入的字符串前加了一个img=是为了将其作为py文件中的变量,方便我们使用import调用

从py文件导入base64字符串并转换为图片

import base64
from BackGround import img
from io import BytesIO
from PIL import Image
image=Image.open(BytesIO(base64.b64decode(img)))

运行上述代码后,此时的image便又被转换为原始图像了

结果:

        然后,按照最开始正常显示的思路,我们将这个image实例经过ImageTK后再传入给tkinter的控件就可以了。

完整代码 

http://www.dtcms.com/wzjs/480162.html

相关文章:

  • 郑州微网站建设app推广拉新
  • 网站超市安装关键词列表
  • 政府网站建设管理和政务新媒体搜一搜
  • 安徽做网站哪家好百度seo怎么做
  • 只用php做网站销售找客户的方法
  • 极路由4 做网站搜狗搜索引擎推广
  • 网站在线支付功能网站优化有哪些类型
  • 网站开发人员需要具备的能力企业品牌营销推广
  • 泰州做企业网站的哪里好北京十大最靠谱it培训机构
  • 网站建设开发语企业seo外包公司
  • 如何做网站写手北京优化seo排名
  • 做网站需要找什么客户seo zac
  • 在线做venn图网站资阳地seo
  • 怎么找外包公司路由优化大师官网
  • 网站测速茶叶推广软文
  • 做网站编辑好还是推广好友链交易平台源码
  • 网站建设论文源代码市场调研报告模板ppt
  • 专业手机网站建设设计谷歌排名查询
  • 网站规划对网站建设起到什么作用关键词seo资源
  • 东莞黄页顺企网浙江seo技术培训
  • 做一个网站难不难单页站好做seo吗
  • 盘锦网站制作智能优化网站
  • mysql数据库做网站外链屏蔽逐步解除
  • 哪个网站做婚礼邀请函好百家联盟推广部电话多少
  • 国外做农产品有名的网站有哪些广告推广精准引流
  • 关于门户网站建设的整改报告电商网站建设步骤
  • 网站弹窗客服代码百度推广方法
  • 自己怎么做搬家网站济源网络推广
  • 网站建设服seo优化上首页
  • 外贸网站框架青岛网页搜索排名提升