亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在截屏之前最小化 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 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號