[英]How can I pin an image to the background of my Tkinter widget?
我制作了一個簡單的小部件,其背景可以自動調整為窗口的形狀。 到目前為止,我放置的圖像無法正確粘貼到所需的背景點。 誰能解釋我如何將圖像正確地固定在運動的背景而不是窗口上,對您有所幫助。
import turtle
import tkinter as tk
from tkinter import *
from PIL import Image, ImageTk
import webbrowser
class App(Frame):
def __init__(self, master, Buttons=None):
Frame.__init__(self, master, Buttons)
self.columnconfigure(0,weight=1)
self.rowconfigure(0,weight=1)
self.original = Image.open(r"C:\specific\image.gif")
self.image = ImageTk.PhotoImage(self.original)
self.display = Canvas(self, bd=0, highlightthickness=0)
self.display.create_image(500, 500, image=self.image, anchor=NW, tags="IMG")
self.display.grid(row=0, column=0, sticky=W+E+N+S)
self.pack(fill='both', expand=True)
self.bind("<Configure>", self.resize)
self.Buttons()
self.Vehicles()
def resize(self, event):
size = (event.width, event.height)
resized = self.original.resize(size, Image.ANTIALIAS)
self.image = ImageTk.PhotoImage(resized)
self.display.delete("IMG")
self.display.create_image(0, 0, image=self.image, anchor=NW, tags="IMG")
def Buttons(self):
self.VButton = tk.Button(master=self, text = "not relevant", font=('Arial, 8')) #, command = forward).pack(side = tk.LEFT)
self.VButton.grid(row=0, column=2, sticky=N, columnspan=2)
def qlink():
webbrowser.open_new(r"http://172.16.0.926/big/")
self.QButton = tk.Button(master=self, text = "not relevant", font=('Arial, 8'), command = qlink)
self.QButton.grid(row=0, column=2, sticky=NW, pady=30, columnspan=2)
def Link():
webbrowser.open_new(r"\\con\UserData\hello\Project\Vserver\file.html")
self.GraphButton = tk.Button(master=self, font=('Arial, 8'), text = "not needed", command = Link)
self.GraphButton.grid(row=0, column=2, sticky=NW, pady=60, columnspan=2)
self.HelpButton = tk.Button(master=self, font=('Arial, 8'), text = "also not relevant") #, command = forward).pack(side = tk.LEFT)
self.HelpButton.grid(row=0, column=2, sticky=N, pady=90, columnspan=2)
def Vehicles(self):
width = 50
height = 25
image = Image.open(r"C:\specific\newimage.png")
image =image.resize((width,height), Image.ANTIALIAS)
photo = ImageTk.PhotoImage(image)
label = Label(image=photo)
label.image = photo
label.place(x=500, y=600)
root = Tk()
app = App(root)
app.mainloop()
根據討論,您的要求是將圖像相對於帶有背景圖像的父窗口放置在Vehicles()
函數中。 在代碼中,您已經在Vehicles()
函數中使用了label
絕對定位:
def Vehicles(self):
#---code----
label.place(x=500, y=600)
您需要的是標簽的相對位置,如下所示。 作為示例,我已將圖像錨定在屏幕中央。 您可以根據需要通過更改anchor
參數的值來更改此位置。
def Vehicles(self):
#---code----
label.place(relx=0.5, rely=0.5, anchor=CENTER)
現在,圖像應根據父窗口的大小更改坐標。 確保您將絕對位置聲明替換為相對位置聲明,因為您不能同時擁有這兩個位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.