新图片放错地方
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)
正在放置您的图片,它只是被放置在视线之外。您可以使用位置和锚点来查看发生了什么。
我是 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)
正在放置您的图片,它只是被放置在视线之外。您可以使用位置和锚点来查看发生了什么。