tkinter回调异常_处理python tkinter中的异常
我在
Python Tkinter中编写了一个应用程序.我最近注意到,对于其中一个操作,如果该操作失败,它有时会关闭(不会给出任何错误).我写了一个小程序来说明问题: –
import os
from Tkinter import *
def copydir():
src = "D:\\a\\x\\y"
dest = "D:\\a\\x\\z"
os.rename(src,dest)
master = Tk()
def callback():
global master
master.after(1, callback)
copydir()
print "click!"
b = Button(master, text="OK", command=copydir)
b.pack()
master.after(100, callback)
mainloop()
要重现该问题,请在“ms命令提示符”中打开它将重命名的文件夹,以便重命名它将从Tkinter代码中引发异常.
我的原始代码是使用线程并且还在执行其他任务,因此我尝试使此测试脚本中的操作尽可能相似.
现在,如果我通过双击它来运行此代码,那么程序只需关闭而不会抛出任何错误.但是,如果我从控制台运行此脚本,那么异常消息将被转储到控制台上,至少我知道,出了点问题.
我可以通过在尝试重命名的代码中使用try / catch来修复此代码,但我也想告知用户这个失败.所以我只想知道在编写Tkinter应用程序时应该遵循哪些编码方法,我想知道: –
1)每当用户通过双击它运行它时,我可以让我的脚本转储一些文件堆栈跟踪.通过这个至少,我会知道一些错误并修复它.
2)我可以阻止tkinter应用程序退出此类错误并在某些TK对话框中抛出任何异常.
感谢帮助!!
您可以按照说明
here覆盖Tkinter的
CallWrapper.必须使用命名的Tkinter导入而不是通配符导入才能这样做:
import Tkinter as tk
import traceback
class Catcher:
def __init__(self, func, subst, widget):
self.func = func
self.subst = subst
self.widget = widget
def __call__(self, *args):
try:
if self.subst:
args = apply(self.subst, args)
return apply(self.func, args)
except SystemExit, msg:
raise SystemExit, msg
except:
traceback.print_exc(file=open('test.log', 'a'))
# ...
tk.CallWrapper = Catcher
b = tk.Button(master, text="OK", command=copydir)
b.pack()
master.mainloop()
tkinter回调异常_处理python tkinter中的异常相关推荐
- python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法
如下所示: from tkinter import * import time #更新进度条函数 def change_schedule(now_schedule,all_schedule): can ...
- async 打包异常_重新打包流中的异常
async 打包异常 Java 8已有两年历史,但是仍然存在社区尚未为其开发好的解决方案库的用例,甚至边缘用例. 如何处理流管道中的检查异常就是这样一个问题. Stream操作接受的功能接口不允许实现 ...
- java runnable 异常_详解Java中多线程异常捕获Runnable的实现
详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口 ...
- Java不满足的依赖异常_不要依赖代码中的异常
因为异常大大地降低性能,所以您不应该将它们用作控制正常程序流程的方式.如果有可能检测到代码中可能导致C# 因为异常大大地降低性能,所以您不应该将它们用作控制正常程序流程的方式.如果有可能检测到代码中可 ...
- python点名代码_基于python tkinter的点名小程序功能的实例代码
基于python tkinter的点名小程序功能的实例代码,花名册,次数,窗口,未找到,初始化 基于python tkinter的点名小程序功能的实例代码 易采站长站,站长之家为您整理了基于pytho ...
- python tkinter计算器实例_使用Python自带GUI tkinter编写一个期权价格计算器
0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...
- 数字华容道游戏_用Python tkinter Canvas实现
在博文<用39条Python语句完成"数字华容道"游戏>一文中使用按钮实现该游戏.本文用Python tkinter Canvas实现该游戏,也仅用了46条语句. 游戏 ...
- python剪刀石头布程序_使用Python Tkinter实现剪刀石头布小游戏功能
编写剪刀石头布游戏 让我们使用Python 3和Tkinter开发相同的游戏.我们可以将游戏命名为Rock-Paper-Scissors-Lizard-Spock. 规则和玩法 ock crushes ...
- python实现剪刀石头布_用Python Tkinter实现剪刀石头布小游戏的方法
用Python Tkinter实现剪刀石头布小游戏的方法 发布时间:2020-12-07 10:38:11 来源:亿速云 阅读:90 作者:小新 这篇文章将为大家详细讲解有关用Python Tkint ...
最新文章
- Centos修改系统语言
- 物联网正在给批发业带来新的商业模式
- Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份
- 科大星云诗社动态20210124
- 【论文解读】从BERT和XLNet到MPNet
- initrd.img相关
- java oauth2.0_OAuth 2.0 Java指南:5分钟保护您的应用程序安全
- [SHOI2011]双倍回文 manacher
- oracle 02085,OracleDBLink创建和维护以及ORA-02085解决办法
- 北大计算机最好的班叫什么,中国大学计算机最好的班,再次迎来“图灵奖”导师,赶超“姚班”...
- spark job stage task概念与区分
- (PPT素材)扁平图标、PNG免抠图小图片
- 基于DEAP库的python进化算法-7.多目标遗传算法NSGA-II
- [Hive]-Table
- 嵌入式大佬 | 嵌入式C语言知识点万字总结
- 关于Msocache文件夹
- 跨境支付与业务流程介绍
- 必须记住这几种庄家洗盘的形态
- MongoDB修改器使用
- Linux NetworkManager网络服务详解