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,圖像=圖像1) 到 w.create_image(500,500,圖像=背景) 但它仍然有同樣的問題 – dovefromhell

+0

當你把它改成'形象=背景「,你是否添加了一行來爲'image1'創建畫布圖像,還是隻創建一個圖像? – TigerhawkT3

回答

0

您將圖像的中心放置在500x500。但是,程序啓動後,您的窗口只有大約300x200。您的圖片可能在那裏,但不在屏幕的可見部分。

即使您將畫布的大小設置爲800x700,也會在畫布內部打包窗口小部件。這會導致畫布縮小以適應其內容。當然,在打包畫布時,不要使用expandfill選項,因此最終結果是GUI的內部縮小到最小尺寸。

注:如果您使用create_window將窗口添加到畫布,你應該還呼籲該窗口上gridpack。您需要撥打create_windowpack,但不能同時撥打。無論你最後打電話給誰,都會有影響。

有很多解決方案,其選擇取決於您的最終目標是什麼。如果您希望無論窗口大小或內容大小如何都將畫布強制爲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