我是Python的新手并尝试了一下。到目前为止,我设法在背景图片前加载一个按钮,但如果我想通过单击按钮更改背景,则新图片位于错误的位置,无论设置锚点如何。
import tkinter as tk
class App(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Toplevel.__init__(self, *args, **kwargs)
self.master.withdraw() # hide second empty window
self.protocol("WM_DELETE_WINDOW", self.master.destroy) # close program if close button is pressed
img1 = tk.PhotoImage(file="C:/Desktop/win10start.png")
img2 = tk.PhotoImage(file="C:/Desktop/winButton.png")
self.c1 = tk.Canvas(master = self, borderwidth = 0, relief = tk.FLAT, highlightthickness = 0)
self.c1.configure(width = 1024, height = 768)
self.c1.grid_propagate(False)
self.c1.create_image((0,0), image = img1, anchor = 'nw')
b1 = tk.Button(self.c1, image = img2, borderwidth = 0, relief = tk.FLAT, highlightthickness = 0, command = lambda: changeImage(self.c1))
self.c1.grid(row = 0, column = 0, sticky = tk.NSEW)
b1.place(x = 344, y = 198 )
self.mainloop()
def changeImage(canvas):
newImage = tk.PhotoImage(file="C:/Desktop/Koala.png")
canvas.delete("all")
canvas.configure(width = 1024, height = 768)
canvas.create_image((0,0), anchor = 'se', image = newImage)
canvas.image = newImage
return
App()
有没有其他方法来设置我应该使用的图片的位置?
编辑:
代码似乎完全随机,就像现在经过一段时间的游戏然后恢复原始代码一样,考拉完全消失了......我很困惑。
答案 0 :(得分:1)
您的代码有2个问题。
1您需要将self添加为changeImage()
方法的参数。
所以改变:
def changeImage(canvas):
要:
def changeImage(self, canvas):
2你应该删除锚点并将图像位置更改为高于0,0。这将让您了解正在发生的事情。
变化:
canvas.create_image((0,0), anchor = 'se', image = newImage)
要:
canvas.create_image((36,36), image = newImage)
您的图片正在被放置,它只是被放置在视野之外。您可以使用位置和锚点来查看最新情况。