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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Tkinter

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

Q&A

解決済

1回答

2153閲覧

tkinterで作成したGUI上で好きな画像を選択→テキストボックスに入力した文字を画像上に表示をさせたい

Syo-PT

総合スコア22

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Tkinter

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

0グッド

0クリップ

投稿2021/06/27 03:26

前提・実現したいこと

GUI画面上で好きな画像を選択し、テキストボックスに入力した好きな文字を選択した画像に表示させたく考えています。

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

TypeError: can only concatenate str (not "int") to str

該当のソースコード

python

1from PIL import Image, ImageDraw, ImageFont 2import tkinter as tk 3from tkinter import filedialog 4import os 5 6# --------------------------------------------------- 7"Tkinterの設定" 8# --------------------------------------------------- 9root = tk.Tk() 10root.title("入力画面") 11root.geometry("400x300") 12frame_button=tk.Frame() 13frame_button.grid(row=1,sticky="we") 14 15# --------------------------------------------------- 16"ラベル" 17# --------------------------------------------------- 18Static1 = tk.Label(text='データの名前を入力してください。') 19Static1.place(x=120, y=30) 20 21# --------------------------------------------------- 22"テキストボックス" 23# --------------------------------------------------- 24txt = tk.Entry(width=20) 25txt.place(x=90, y=70) 26 27text=txt 28draw_x = 90 29draw_y = 75 30 31def btn_click(): 32 33 type = [("all file","*")] 34 path = os.path.abspath(os.path.dirname(__file__)) 35 file_path = filedialog.askopenfilename(filetypes = type, initialdir = path) 36 image = Image.open(file_path) 37 draw = ImageDraw.Draw(image) 38 font = ImageFont.truetype("/Library/Fonts/Arial Unicode.ttf", size=50) 39 draw.text((draw_x, draw_y), text, fill=(255,0,0), font=font) 40 image.save('sample.jpeg') 41 42 43# --------------------------------------------------- 44"ボタンの作成" 45# --------------------------------------------------- 46Button=tk.Button(frame_button,text="選択",command=btn_click) 47Button.grid(row=1,column=0) 48 49 50root.mainloop()

試したこと

draw.text((draw_x, draw_y), text, fill=(255,0,0), font=font)
の「text」の部分を「"text"」などとすれば、入力することができるのですが、テキストボックスに""で囲むとテキストボックスに入力した文字が表示されません。
調べてみると、「text」の部分は文字列ではいけないようなのですが、テキストボックスに入力した文字を画像に表示させる方法はありますでしょうか?

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

M1mac
anacondaを使用しています。
ご教授いただけましたら幸いです。
よろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

python

1 draw.text((draw_x, draw_y), text, fill=(255,0,0), font=font)
  • texttext = txt となっているので、tk.Entry オブジェクトです。
  • また、入力文字列は、ボタンが押された時点の入力を取る必要があるので、

グローバル変数へ事前に代入しておくことは出来ません。

  • Entry の入力値は、.get() で得ることができます。

python

1 draw.text((draw_x, draw_y), txt.get(), fill=(255,0,0), font=font)

投稿2021/06/27 05:34

teamikl

総合スコア8664

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Syo-PT

2021/06/27 05:55

いつもお世話になっております。 ご指摘の通り、修正したら入力することができました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問