🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Tkinter

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

Python

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

Q&A

2回答

4352閲覧

【初心者】pythonのtkiterで作成したラベルの上にcanvasで画像を張り付けたい。

7serei

総合スコア4

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Tkinter

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

Python

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

0グッド

0クリップ

投稿2019/11/30 10:02

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

pythonのtkinterで作成したラベルの上にcanvasで画像を張り付けようとしたのに、 ラベルが被さってしまいます。独学で始めたばかりなので簡単なミスだったらすみません。 よろしくお願いいたします。

該当のソースコード

python

1import tkinter 2from PIL import Image, ImageTk 3 4#ウィンドウの作成 5root = tkinter.Tk() 6root.title("abc") 7root.geometry("700x500") 8 9#キャンバスの作成 10canvas = tkinter.Canvas(root,width=700,height=500) 11canvas.place(x=0,y=0) 12 13#ラベルの作成 14label = tkinter.Label(root, text='テキスト', fg='black',) 15label.place(x=50,y=50) 16 17#画像張り付け 18img = Image.open('ck.png') 19img = ImageTk.PhotoImage(img) 20canvas.create_image(0,0,image=img, anchor=tkinter.NW) 21 22root.mainloop()

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

python3.8.0を使用

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

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

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

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

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

guest

回答2

0

プログラム初心者ですが、回答してみます。

ラベルの位置と画像の位置が重なっているのは、そのようにプログラムしているからではないでしょうか?

例えば、以下のようにすれば解決したことになりますか?

画像位置を(0,0)から(100,100)に変更

Python3

1canvas.create_image(100,100,image=img, anchor=tkinter.NW)

補足:小さい画像(例:100×100ぐらい)で見たら分かりやすいような気がします。

投稿2019/12/02 10:54

Akihiro_py

総合スコア55

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

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

0

ラベルの上にcanvasで画像を張り付けようとした

ラベルを覆い隠すということですか?
label.lower() でいけるかもしれません。

import tkinter #ウィンドウの作成 root = tkinter.Tk() root.title("abc") root.geometry("700x500") #キャンバスの作成 canvas = tkinter.Canvas(root,width=700,height=500) canvas.place(x=0,y=0) #ラベルの作成 label = tkinter.Label(root, text='テキスト', fg='black',) label.place(x=50,y=50) #画像張り付け img = tkinter.PhotoImage(file='ck.png') canvas.create_image(0,0,image=img, anchor=tkinter.NW) label.lower() root.mainloop()

投稿2019/12/02 10:32

編集2019/12/02 12:31
shiracamus

総合スコア5406

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

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

7serei

2019/12/02 11:43

ありがとうございます。説明が下手ですいません。正確に言うと、ラベルで表示したテキストの上に被さる形で画像を貼り付けたいのですが、画像がラベルの背景になってしまいます。
shiracamus

2019/12/02 12:05

キャンバスにラベルを乗せてはいかがですか? 回答欄にソースを追記しました。
7serei

2019/12/02 12:12 編集

キャンバスにラベルを乗せる: のコードの canvas.create_image の座標を(50,50)に指定して、ラベルで表示したテキストの上に画像が被るようにしたいのですが。(テキストが見えなくなるように) そもそも、そんなオプションは無いのでしょうか?
shiracamus

2019/12/02 12:26

label.lower() するだけでいけそうです。
7serei

2019/12/02 12:30

できました!!! こんな私に付き合わせてしまって申し訳ないです。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問