質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

受付中

pythonのImageGrabでのキャプチャで特定のGUIウインドウを無視したい

bajapan
bajapan

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

90閲覧

投稿2022/05/16 22:31

前提

pythonのImageGrabでのキャプチャで特定のGUIウインドウを無視したい

実現したいこと

  • [ ]pythonのtkinterによって作成した背景を透明化したGUIウインドウで、そのウインドウ内をキャプチャしたいのですが、tkinterで表示されている文字列や画像は無視してキャプチャしたいです。方法を教えていただけると幸いです。

imageglabを行いたい

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

python

import os import time import tkinter as tk from tkinter import filedialog from PIL import Image,ImageGrab,ImageTk from tkinter import font def capture(): global img,pimg,drawid x=canvas.winfo_rootx() y=canvas.winfo_rooty() w=canvas.winfo_width() h=canvas.winfo_height() geo=root.wm_geometry() # 窓の位置を記録 time.sleep(0.1) img=ImageGrab.grab(bbox=(x,y,x+w,y+h), include_layered_windows = True) root.deiconify() # 再表示 root.wm_geometry(geo) # 消した位置に戻す """ if drawid!=None: canvas.delete(drawid) pimg=None drawid=None pimg=ImageTk.PhotoImage(image=img) drawid=canvas.create_image( w//2,h//2, image=pimg )""" root=tk.Tk() root.geometry("600x400") frame=tk.Frame(root) def save(): path_name=filedialog.asksaveasfilename(title = "名前を付けて保存", filetypes = [ ("PNG", ".png"), ("JPEG", ".jpg"), ("Tiff", ".tif"),("Bitmap", ".bmp")], # ファイルフィルタ initialdir = "./images", # imageファイルが必要 defaultextension = "png") if path_name: img.save(path_name) #-------------------------------------------------------------- #text=tk.StringVar() #text.set("aaa") label = tk.Label(root, textvariable=text) label.pack() #---------------------------------------------------------------------------------------- captbtn=tk.Button(frame,text='Capture',command=capture)#このボタンでキャプチャ savebtn=tk.Button(frame,text='Save',command=save)#このボタンで保存 savebtn.pack(side='left') captbtn.pack(side='left') #--------------------------------------------------------------------------- frame.pack() root.attributes("-transparentcolor", "red") canvas=tk.Canvas(root,bg='red',width=1920,height=1080) #canvas.pack(ipady=10,ipadx=10) canvas.pack(ipady=10,ipadx=10) root.attributes("-topmost", True) label=tk.Label(master=root,text="キャプチャしたくない文字列",foreground="red",background="snow") label.place(x=150,y=150) root.mainloop()

補足情報(FW/ツールのバージョンなど)

anaconda3
jupyternotebook
Python 3.7.11

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。