今天使用python的tkinter库写了一个右下角的弹窗模块,使用了PIL模块。

目录

报错原因

解决方法


但由于多次调用,需要修改弹窗上面的文字、图片再重新显示。文字的修改没有问题,但图片的修改会产生如下报错:

image "pyimage2" doesn't exist


报错原因

在网上找了找,发现如下解释

A common reason for this is that you have multiple Tk instances in your application. If you create a PhotoImage under one Tk instance, you cannot access it from other instances.

To fix this, make sure you only use one Tk instance (use Toplevel to create new toplevel windows), or make sure that you create the image under the same instance as the widget you're going to use it in.

The easiest way to do this is to pass in a master keyword argument to the PhotoImage constructor:

photo = PhotoImage(..., master=myroot)
button = Button(myroot, ...)
button.photo = photo # keep a reference

所以,出现错误的原因是对于PhotoImage对象只能在一个线程下使用,在主要模块中已经用TK()启动一个线程,再在次模块中启动一个线程就不能调用PhotoImage对象。所以开启希望开启次窗口可采用用frame或者toplevel去代替。并且,在一个程序中只能存在一个根窗口,只有一个Tk(),其他的窗口只能以顶层窗口Toplevel()的形式存在。


解决方法

将你的如下代码:

root = tk.Tk()

改为:

root = tk.Toplevel()

但是,修改了我的代码,发现这会导致每次弹出窗口都会多一个名为tk的窗口:

这是因为,调用toplevel是tkinter默认先调用tk.tk(),这行语句:

root = tk.Toplevel()

就相当于:

root = tk.Tk()
root.mainloop()root = tk.Toplevel()

所以,最好的解决办法是先将一个tk.Tk()的窗口隐藏,然后即可正常显示:

root = tk.Tk()
root.withdraw()root = tk.Toplevel()

成功解决:image “pyimage2“ doesn‘t exist【轩详细教程】相关推荐

  1. autocad.net 画多段线_解决AutoCAD2014绘制多段线的详细教程--系统之家

    AutoCAD2014如何绘制多线段?多段是由相连的直线和圆弧曲线组成的, 在直线和圆弧曲线之间可进行自由切换.用户可以设置多段线的宽度,也可以在不同的线段中设置不同的线宽.此外, 线段的始末端点也可 ...

  2. Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功)

    Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功) 文章目录 Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功) 1.上传或者下载mysql安装包 2.检查是否 ...

  3. 成功解决Exception: Graph file doesn't exist, path=F:\File_Python\Python_example\Human_Posture_Detection\

    成功解决Exception: Graph file doesn't exist, path=F:\File_Python\Python_example\Human_Posture_Detection\ ...

  4. 成功解决:Cannot run peer because cannot init crypto, specified path “/opt/gopath...msp: no such file or

    多机部署Fabric v2.2.0时,主机2加入网络时报错如下 ERRO 001 Cannot run peer because cannot init crypto, specified path ...

  5. 成功解决 org.mybatis.spring.MyBatisSystemException问题!!

    成功解决 org.mybatis.spring.MyBatisSystemException问题!! 参考文章: (1)成功解决 org.mybatis.spring.MyBatisSystemExc ...

  6. 开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]

    转自:http://blog.sina.com.cn/hyiyun 近些天,有网友的电脑出现:开机后屏幕一片漆黑,但屏幕中央显示有鼠标指针,并且可移动.按键盘上的不论什么键都没有反应,鼠标也仅可移动, ...

  7. 成功解决ValueError: Data is not binary and pos_label is not specified

    成功解决ValueError: Data is not binary and pos_label is not specified 目录 解决问题 解决思路 解决方法 解决问题 raise Value ...

  8. 成功解决在excel表格中仅在某列内插入一个空白单元格,使其下部的数据整体下移一格

    成功解决在excel表格中仅在某列内插入一个空白单元格,使其下部的数据整体下移一格 目录 解决问题 解决方法 解决问题 在excel表格中仅在某列内插入一个空白单元格,使其下部的数据整体下移一格 解决 ...

  9. 成功解决将python的列表格式输出数值(如pandas.read_excel().describe()),批量转到表格内daiding

    成功解决将python的列表格式输出数值(如pandas.read_excel().describe()),批量转到表格内 目录 解决问题 解决方法 解决问题 将python的列表格式(如pandas ...

最新文章

  1. 对比电机和舵机中的PWM信号的作用
  2. gradle 构建包含源码配置
  3. Linux应用集成MySQL数据库访问技巧
  4. linux的 dev vdal,RAZVOJ DELA NA DALJAVO V SLOVENIJI
  5. Java程序员校招蚂蚁金服,大专生出身,做Java程序员真的没有春天吗
  6. C++ STL priority_queue的正确使用方法
  7. winform程序制作安装包
  8. 图片裁剪,合成(设置透明背景)
  9. python注释可用于表明作者和版权信息_vs2017 新建Class 文件时,自动添加作者版权声明注释...
  10. 对于注塑模具设计的原则,这些核心你掌握了吗?
  11. STM32MP157驱动开发——Linux IIO驱动(上)
  12. Java设计模式 - 依赖倒转原则
  13. php刷网站关键词排名,网站关键词排名如何刷点击流量?
  14. Strusts框架学习(一)
  15. 汉明码(海明码)计算,模板套用易懂!
  16. Everything+cpolar搭建在线资料库,实现随时随地访问
  17. Svchost.exe 程序占用CPU高
  18. 作为一名程序员,你觉得最重要的能力是什么?
  19. C++的4种智能指针剖析使用
  20. 计算机网络工程和网络工程的区别,网络工程专业和计算机网络专业有什么区别?...

热门文章

  1. 基本概念学习(1004)---固件
  2. 虚拟化及vmware产品介绍
  3. 在珠海python工资一般多少钱_珠海学习BI工资多少,大数据的应用
  4. 财政部发布美国主要贸易伙伴宏观经济和MogaFX外汇政策报告
  5. Qt实现多级菜单及设置菜单的宽度
  6. bcd转ascii码 流程图_BCD码到ASCII码转换实例
  7. vue-cli脚本架安装出错处理
  8. Android进阶之路 - onTouch从简入繁
  9. 小白建网站,该如何入手?
  10. ntag213和215有什么区别_【NTAG213/215/216芯片读写器NFC读卡器发卡器】 - 太平洋安防网...