1

ウィンドウや背景画像を表示するためにtkinterを得ることができます。誰もが一度に両方の画像を表示する方法を提案しています(オブジェクトを背景画像に表示したい)。以下:Tkinterキャンバスに画像が表示されない

from tkinter import * 
from tkinter import ttk 


root= Tk() 
# Code to add widgets will go here... 
root.title("MTGO Daily Decklists") 
def test(): 
    print("things") 

# pick a .gif image file you have in the working directory 
# or give full path 
image1 = PhotoImage(file="backgroundimage.gif") 
w = Canvas(root, width=800, height=700,) 
background = PhotoImage(file = "backgroundimage.gif") 
w.create_image(500, 500, image=image1) 
w.pack() 
format_mtg= StringVar() 
format_entry= ttk.Entry(w, width=25, textvariable=format_mtg) 
format_entry_window = w.create_window(10, 10, anchor='n', window=format_entry) 
format_entry.pack() 
date= StringVar() 
date_entry=ttk.Entry(root, width=25, textvariable=date) 
date_entry_window = w.create_window(10, 10, anchor='n', window=date_entry) 
date_entry.pack() 
ttk.Label(w, text="input format here").pack() 
ttk.Button(w, text="fetch", command=test).pack() 
ttk.Label(w, text="input date here").pack() 
sortby= StringVar() 
sortby_entry= ttk.Entry() 
sortby_entry.pack() 
ttk.Label(w, text="input how you want the decklists to be sorted").pack() 
root.mainloop() 
+0

背景画像からキャンバス画像を作成しようとする試みはありません。 – TigerhawkT3

+0

おっと、私は w.create_image(500、500、画像=バックグラウンド) に w.create_image(500、500、画像=画像1)を変更していますが、画像 'にそれを変更した場合、それはまだ同じ問題 – dovefromhell

+0

を持っています=あなたは 'image1'のためのキャンバスイメージを作成するために行を追加しましたか、あるいはあなたは1つのイメージしか作成していませんか? – TigerhawkT3

答えて

0

イメージの中央を500x500に配置しています。しかし、プログラムの起動後、ウィンドウは約300x200にすぎません。あなたのイメージはそこにある可能性がありますが、画面の見える部分から外れています。

キャンバスのサイズを800x700に設定しても、キャンバス内にウィジェットをパックしています。これによりキャンバスは内容に合わせて縮小されます。キャンバスをパッキングするときにexpandまたはfillオプションを使用しないようにしてください。その結果、GUIの内部が最小サイズに縮小されます。

注:あなたがキャンバスに窓を追加するcreate_windowを使用している場合、あなたはもそのウィンドウ上gridまたはpackを呼び出すべきではありません。 create_windowまたはpackのいずれかを呼び出す必要がありますが、両方を呼び出す必要はありません。最後にあなたが呼ぶものは、何らかの効果があるものです。

多くのソリューションがあります。その選択肢は、最終的な目標が何であるかによって異なります。ウィンドウのサイズや内容のサイズにかかわらずキャンバスの高さを800x700にする場合は、キャンバス内でジオメトリの伝播をオフにすることができます。たとえば:

w.pack_propagate(False) 

また、それに与えられたスペースを埋めた後、左上隅に背景画像を固定するためのキャンバスを詰めることができました。例:

w.pack(fill="both", expand=True) 
w.create_image(0, 0, image=image1, anchor="nw") 

また、キャンバスの使用をやめ、背景イメージをラベルに入れることもできます。 placeを使用して、メインウィンドウのラベルを中央に配置することができます。例:

background_label = Label(root, image=image1) 
background_label.place(relx=.5, rely=.5) 
+0

うまくいきました、ありがとう – dovefromhell

関連する問題