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

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

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

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Tkinter

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

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

Python

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

Q&A

解決済

2回答

1343閲覧

Pythonで2つのダイアログ

hero_mato

総合スコア5

canvas

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Tkinter

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

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

Python

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

0グッド

0クリップ

投稿2020/07/10 05:01

編集2020/07/10 05:15

Pythonを使用して、1枚の画像を左右に分割しにし、分割した画像を別々のダイアログに表示するプログラムを作成しています。下記のプログラムにてダイアログは表示されたのですが、分割した画像のうち2番目の画像が表示しません。ご存じの方たいらっしゃれば修正方法のご教示をお願いいたします。Pythonには不慣れなので根本的な間違いがあるかもしれませんので、合わせてよろしくお願いいたします。

import tkinter from PIL import Image, ImageTk # windowを描画 window1 = tkinter.Tk() window2 = tkinter.Tk() # windowサイズを変更 window1.geometry("600x400") #実際に表示するウィンドウのサイズ window2.geometry("800x600") #実際に表示するウィンドウのサイズ # windowタイトルを設定 window1.title("the Tkinter 1st") window2.title("the Tkinter 2nd") # 画像を表示するための準備 img = Image.open('test.jpg') img = ImageTk.PhotoImage(img) # 画像を表示するためのキャンバスの作成(黒で表示) canvas = tkinter.Canvas(bg = "black", width=400, height=300) canvas.place(x=100, y=50) # 左上の座標を指定 # キャンバスに画像を表示する。第一引数と第二引数は、x, yの座標 canvas.create_image(30, 30, image=img, anchor=tkinter.NW) # 画像2を表示するための準備 img2 = Image.open('test2.jpg') img2 = ImageTk.PhotoImage(img2) # 画像を表示するためのキャンバスの作成(白で表示) canvas2 = tkinter2.Canvas(bg = "white", width=600, height=400) canvas2.place(x=100, y=50) # 左上の座標を指定 # キャンバスに画像を表示する。第一引数と第二引数は、x, yの座標 canvas2.create_image(30, 30, image=img2, anchor=tkinter.NW) #表示 window1.mainloop() window2.mainloop()

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

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

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

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

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

y_waiwai

2020/07/10 05:06

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
hero_mato

2020/07/10 05:16

ご指摘ありがとうございます。コード欄にソースを記載しなおしました。
guest

回答2

0

おはようございます。

問題文読ませていただきました。

こんな感じでいかがでしょうか?

python

1import tkinter 2from PIL import Image, ImageTk 3 4# Windowを描画する。 5window1 = tkinter.Tk() 6window2 = tkinter.Tk() 7 8# Windowの画面サイズを設定する。 9# geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/ 10window1.geometry("600x400") 11# Windowの画面サイズを設定する。 12# geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/ 13window2.geometry("800x600") 14 15# Windowタイトルを設定 16window1.title("the Tkinter 1st") 17# Windowタイトルを設定 18window2.title("the Tkinter 2nd") 19 20# 画像1を表示するための準備 21# 画像について : https://kuroro.blog/python/Z7k1LSyDyiDHtD5UCjmG/ 22img1 = Image.open('/path_to/xxx.xxx') 23# 画像を貼り付ける先を設定するため、masterへwindow1を設定する。 24img1 = ImageTk.PhotoImage(img1, master=window1) 25 26# Windowを親要素として、画像を表示するためのcanvas Widgetを作成。 27# bg : 背景色 28# 色の設定を変更する場合 : http://www.tcl.tk/man/tcl/TkCmd/colors.htm 29# width : 幅の設定 30# height : 高さの設定 31# Canvasについて : https://kuroro.blog/python/ANyM9WLpd0LSXRQAELOj/ 32canvas1 = tkinter.Canvas(window1, bg="black", width=1000, height=1000) 33# Windowを親要素として、canvas Widgetをどのように配置するのか? 34# placeについて : https://kuroro.blog/python/JyaHUKyFyxCa0baFfXg0/ 35canvas1.place(x=100, y=50) 36# キャンバスに画像を表示する。 37# 第一引数 x座標 : 200 38# 第二引数 y座標 : 200 39# <option> 40# image : 表示するimage情報 41# anchor : 画像の配置を変更する。tk.NW(左上) 42# 戻り値 : ID 43canvas1.create_image(30, 30, image=img1, anchor=tkinter.NW) 44 45# 画像2を表示するための準備 46# 画像について : https://kuroro.blog/python/Z7k1LSyDyiDHtD5UCjmG/ 47img2 = Image.open('/path_to/xxx.xxx') 48# 画像を貼り付ける先を設定するため、masterへwindow2を設定する。 49img2 = ImageTk.PhotoImage(img2, master=window2) 50 51# Windowを親要素として、画像を表示するためのcanvas Widgetを作成。 52# bg : 背景色 53# 色の設定を変更する場合 : http://www.tcl.tk/man/tcl/TkCmd/colors.htm 54# width : 幅の設定 55# height : 高さの設定 56# Canvasについて : https://kuroro.blog/python/ANyM9WLpd0LSXRQAELOj/ 57canvas2 = tkinter.Canvas(window2, bg="black", width=1000, height=1000) 58# Windowを親要素として、canvas Widgetをどのように配置するのか? 59# placeについて : https://kuroro.blog/python/JyaHUKyFyxCa0baFfXg0/ 60canvas2.place(x=100, y=50) 61# キャンバスに画像を表示する。 62# 第一引数 x座標 : 200 63# 第二引数 y座標 : 200 64# <option> 65# image : 表示するimage情報 66# anchor : 画像の配置を変更する。tk.NW(左上) 67# 戻り値 : ID 68canvas2.create_image(30, 30, image=img2, anchor=tkinter.NW) 69 70# Windowをループさせて、継続的にWindow表示させる。 71# mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/ 72window1.mainloop() 73# Windowをループさせて、継続的にWindow表示させる。 74# mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/ 75window2.mainloop()

ご確認のほど、よろしくお願いいたします。

またTkinterの構成要素からcanvasに関するサンプルコードを、以下の記事でまとめましたので、ご確認いただけますと幸いです。
Tkinterで使われるcanvasとは?具体的な活用方法やコードを徹底解説

投稿2021/06/12 00:33

編集2021/06/12 00:42
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

tkinter.Tk は一カ所のみにして、
2つ目以降のサブウィンドウには tkinter.Toplevel を使います。

mainloop() も基本メインウィンドウの一カ所のみです。
mainloop は GUIの描画やイベントといった処理を担当する為
ウィンドウが閉じられる迄、その後ろのコードは実行されません。


、分割した画像のうち2番目の画像が表示しません。

diff

1- canvas2 = tkinter2.Canvas(bg = "white", width=600, height=400) 2+ canvas2 = tkinter.Canvas(window2, bg = "white", width=600, height=400)

親ウィジェットを指定し、キャンバスを2つ目のウィンドウに作成します

投稿2020/07/10 05:39

編集2020/07/10 12:42
teamikl

総合スコア8664

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

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

hero_mato

2020/07/12 22:24

ご教示いただいた方法で実行してみたところ、無事に2画面表示することを確認できました。お時間いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問