Python Tkinter截图工具触发return self.func(*args) TypeError报错求解
错误原因排查
报错已经明确指向问题根源:你尝试将函数类型和字符串做拼接操作,具体问题有2处:
- 函数未正确调用:
takeBoundedScreenShot方法中fileName = file_save只是把file_save函数本身赋值给了变量,没有执行函数,正确调用需要加括号file_save() - 现有
file_save函数逻辑完全不符合需求:你写的file_save是用来保存文本框内容的,没有返回保存路径,且默认后缀为txt,不适用截图存储场景。
修复方案
直接替换原有错误逻辑即可,步骤如下:
- 删除原有的
file_save函数,该功能完全不需要 - 修改
takeBoundedScreenShot方法为如下代码:
def takeBoundedScreenShot(self, x1, y1, x2, y2): im = pyautogui.screenshot(region=(x1, y1, x2, y2)) # 弹出保存路径选择框,默认保存为png格式 fileName = tkinter.filedialog.asksaveasfilename( defaultextension=".png", filetypes=[("PNG图片", "*.png"), ("JPG图片", "*.jpg"), ("所有文件", "*.*")] ) # 用户点击取消时直接跳过保存逻辑 if not fileName: return im.save(fileName)
修改完成后重新运行程序,框选区域结束后就会正常弹出保存路径选择窗口,不会再出现崩溃问题。
内容的提问来源于stack exchange,提问作者Bean
相关产品推荐
相关产品推荐

