我在

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中的异常相关推荐

  1. python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法

    如下所示: from tkinter import * import time #更新进度条函数 def change_schedule(now_schedule,all_schedule): can ...

  2. async 打包异常_重新打包流中的异常

    async 打包异常 Java 8已有两年历史,但是仍然存在社区尚未为其开发好的解决方案库的用例,甚至边缘用例. 如何处理流管道中的检查异常就是这样一个问题. Stream操作接受的功能接口不允许实现 ...

  3. java runnable 异常_详解Java中多线程异常捕获Runnable的实现

    详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口 ...

  4. Java不满足的依赖异常_不要依赖代码中的异常

    因为异常大大地降低性能,所以您不应该将它们用作控制正常程序流程的方式.如果有可能检测到代码中可能导致C# 因为异常大大地降低性能,所以您不应该将它们用作控制正常程序流程的方式.如果有可能检测到代码中可 ...

  5. python点名代码_基于python tkinter的点名小程序功能的实例代码

    基于python tkinter的点名小程序功能的实例代码,花名册,次数,窗口,未找到,初始化 基于python tkinter的点名小程序功能的实例代码 易采站长站,站长之家为您整理了基于pytho ...

  6. python tkinter计算器实例_使用Python自带GUI tkinter编写一个期权价格计算器

    0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...

  7. 数字华容道游戏_用Python tkinter Canvas实现

    在博文<用39条Python语句完成"数字华容道"游戏>一文中使用按钮实现该游戏.本文用Python tkinter Canvas实现该游戏,也仅用了46条语句. 游戏 ...

  8. python剪刀石头布程序_使用Python Tkinter实现剪刀石头布小游戏功能

    编写剪刀石头布游戏 让我们使用Python 3和Tkinter开发相同的游戏.我们可以将游戏命名为Rock-Paper-Scissors-Lizard-Spock. 规则和玩法 ock crushes ...

  9. python实现剪刀石头布_用Python Tkinter实现剪刀石头布小游戏的方法

    用Python Tkinter实现剪刀石头布小游戏的方法 发布时间:2020-12-07 10:38:11 来源:亿速云 阅读:90 作者:小新 这篇文章将为大家详细讲解有关用Python Tkint ...

最新文章

  1. Centos修改系统语言
  2. 物联网正在给批发业带来新的商业模式
  3. Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份
  4. 科大星云诗社动态20210124
  5. 【论文解读】从BERT和XLNet到MPNet
  6. initrd.img相关
  7. java oauth2.0_OAuth 2.0 Java指南:5分钟保护您的应用程序安全
  8. [SHOI2011]双倍回文 manacher
  9. oracle 02085,OracleDBLink创建和维护以及ORA-02085解决办法
  10. 北大计算机最好的班叫什么,中国大学计算机最好的班,再次迎来“图灵奖”导师,赶超“姚班”...
  11. spark job stage task概念与区分
  12. (PPT素材)扁平图标、PNG免抠图小图片
  13. 基于DEAP库的python进化算法-7.多目标遗传算法NSGA-II
  14. [Hive]-Table
  15. 嵌入式大佬 | 嵌入式C语言知识点万字总结
  16. 关于Msocache文件夹
  17. 跨境支付与业务流程介绍
  18. 必须记住这几种庄家洗盘的形态
  19. MongoDB修改器使用
  20. Linux NetworkManager网络服务详解

热门文章

  1. arduino 大气气压模块 BOSCH BMP085
  2. HDU ACM 1162 Eddy's picture
  3. STL之Deque的使用方法
  4. 4)公有成员\私有成员和静态成员
  5. 打开vsd_低温修正下的CDFA与VSD
  6. 使用STM32CubeMX求得CPU芯片温度
  7. 编程(创客)教育哪家强?图形化编程软件体验报告(慧编程)
  8. 连续连通域检测算法的MATLAB仿真
  9. NHibernate概括
  10. 运维经理的运维经验总结