前提
pythonのImageGrabでのキャプチャで特定のGUIウインドウを無視したい
実現したいこと
- [ ]pythonのtkinterによって作成した背景を透明化したGUIウインドウで、そのウインドウ内をキャプチャしたいのですが、tkinterで表示されている文字列や画像は無視してキャプチャしたいです。方法を教えていただけると幸いです。
imageglabを行いたい
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1import os 2import time 3import tkinter as tk 4from tkinter import filedialog 5from PIL import Image,ImageGrab,ImageTk 6from tkinter import font 7 8def capture(): 9 global img,pimg,drawid 10 x=canvas.winfo_rootx() 11 y=canvas.winfo_rooty() 12 w=canvas.winfo_width() 13 h=canvas.winfo_height() 14 geo=root.wm_geometry() # 窓の位置を記録 15 time.sleep(0.1) 16 img=ImageGrab.grab(bbox=(x,y,x+w,y+h), include_layered_windows = True) 17 root.deiconify() # 再表示 18 root.wm_geometry(geo) # 消した位置に戻す 19 """ 20 if drawid!=None: 21 canvas.delete(drawid) 22 pimg=None 23 drawid=None 24 pimg=ImageTk.PhotoImage(image=img) 25 drawid=canvas.create_image( 26 w//2,h//2, 27 image=pimg 28 )""" 29 30root=tk.Tk() 31root.geometry("600x400") 32frame=tk.Frame(root) 33def save(): 34 path_name=filedialog.asksaveasfilename(title = "名前を付けて保存", 35 filetypes = [ ("PNG", ".png"), ("JPEG", ".jpg"), ("Tiff", ".tif"),("Bitmap", ".bmp")], # ファイルフィルタ 36 initialdir = "./images", # imageファイルが必要 37 defaultextension = "png") 38 if path_name: 39 img.save(path_name) 40 41#-------------------------------------------------------------- 42#text=tk.StringVar() 43#text.set("aaa") 44label = tk.Label(root, textvariable=text) 45label.pack() 46#---------------------------------------------------------------------------------------- 47 48captbtn=tk.Button(frame,text='Capture',command=capture)#このボタンでキャプチャ 49savebtn=tk.Button(frame,text='Save',command=save)#このボタンで保存 50savebtn.pack(side='left') 51captbtn.pack(side='left') 52#--------------------------------------------------------------------------- 53frame.pack() 54root.attributes("-transparentcolor", "red") 55canvas=tk.Canvas(root,bg='red',width=1920,height=1080) 56#canvas.pack(ipady=10,ipadx=10) 57canvas.pack(ipady=10,ipadx=10) 58root.attributes("-topmost", True) 59label=tk.Label(master=root,text="キャプチャしたくない文字列",foreground="red",background="snow") 60label.place(x=150,y=150) 61root.mainloop() 62
補足情報(FW/ツールのバージョンなど)
anaconda3
jupyternotebook
Python 3.7.11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。