为了账号安全,请及时绑定邮箱和手机立即绑定

如何在截屏之前最小化 tkinter 应用程序然后最大化

如何在截屏之前最小化 tkinter 应用程序然后最大化

回首忆惘然 2022-07-26 09:49:37
我有一个 python tkinter 应用程序脚本,可以在按下按钮时截取屏幕截图。但不幸的是,在截屏时,应用程序的窗口也被捕获。这是应用程序的代码:from PIL import ImageGrabimport tkinter as tkfrom tkinter import filedialogimport timedef takeShot():    sc = ImageGrab.grab()    path = filedialog.asksaveasfilename(defaultextension='.png')    sc.save(path)root = tk.Tk()canvas1 = tk.Canvas(root,width=300,height=300)canvas1.pack()but = tk.Button(text='Take Screenshot',command=takeShot,bg='green',fg='white',font=10)canvas1.create_window(150,150,window=but)root.mainloop()虽然它会截取屏幕截图,但应用程序窗口也会被捕获我不希望屏幕截图中出现那个白色窗口。我试图最小化窗口,然后通过更新这样的函数来最大化:def takeShot():    root.withdraw()    sc = ImageGrab.grab()    root.deiconify()    path = filedialog.asksaveasfilename(defaultextension='.png')    sc.save(path)但它没有用。有没有办法最小化应用程序然后截取屏幕截图然后最大化它以保存对话框以便捕获全屏?
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您需要在调用root.update_idletasks()后调用root.withdraw()以强制 tkinter 重绘窗口(或者在这种情况下,从视图中删除窗口)。

如果您发现这root.update_idletasks()不会导致窗口在您的平台上隐藏,您可以尝试root.update()update_idletasks不过应该可以。


查看完整回答
反对 回复 2022-07-26
?
UYOU

TA贡献1878条经验 获得超4个赞

我在运行 Python 3.8.1 的 Windows 中没有问题。但是,我建议在模态对话框之后移动右侧并在关闭后返回asksaveasfilename(...):root.withdraw()asksaveasfilename(...)


def take_snapshot():

  root.withdraw()

  filename = filedialog.asksaveasfilename(initialdir='.', defaultextension='.png')

  if filename:

    image = ImageGrab.grab()

    image.save(filename)

  root.deiconify()


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信