新图片放错地方

New image is in the wrong place

我是 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()

还有其他方法可以设置我应该使用的图片位置吗?

编辑:

代码似乎完全随机,至于现在玩了一下然后恢复原始代码,考拉就完全没了...我很困惑。

您的代码有 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)

正在放置您的图片,它只是被放置在视线之外。您可以使用位置和锚点来查看发生了什么。