Raspberry Pi Python Tkinter更新标签图像

时间:2015-02-10 04:12:57

标签: python tkinter

您好我正在尝试更新以下代码中的图像,我试图调用self.changeRarrow()来执行此操作。一个问题是,我不知道如何编辑此代码以便在调用后进行更新?目前我正在尝试更改全局变量然后销毁标签并使用新参数重新创建它,但我看到了一些关于使用LabelR.config(image = y)来更新标签的事情。我试过了,但它不允许我从任何其他函数中引用LabelR。任何帮助将不胜感激!!我也对主要的代码更改持开放态度。

def __init__(self, *args, **kwargs):
    tk.Tk.__init__(self, *args, **kwargs)
    self.bind("<KeyRelease-a>", self.on_a_release)
    self.bind("<KeyRelease-d>", self.on_d_release)
    self.bind("<KeyRelease-w>", self.on_w_release)
    self.bind("<KeyRelease-s>", self.on_s_release)
    self.bind("<Key>", self.key)
    self.title("RC Command Center")
    self.geometry("500x500")
    self.initUI()
    self.arrowLeft()
    self.arrowRight()

def arrowLeft(self):
    leftArrow = ImageTk.PhotoImage(Image.open("arrowLeft.png"))
    labelL = Label(image=leftArrow)
    labelL.image = leftArrow
    labelL.pack(side="left")

def arrowRight(self):
    x = ImageTk.PhotoImage(Image.open(y))
    #photos = [ImageTk.PhotoImage(Image.open("arrowRight.png")), ImageTk.PhotoImage(Image.open("arrowRightR.png"))]
    labelR = Label(image=x)
    labelR.image = x
    labelR.pack(side="right")


def changeRarrow(self):
     global y
     y = "arrowRightR.png"
     labelR.destroy()
     self.arrowRight()

1 个答案:

答案 0 :(得分:0)

您的问题似乎是垃圾收集器。 两种已知的解决方法适合您的情况。  要么为您的应用程序使用类,并将图像声明为类变量(self)或将其设置为全局。

&#34; X&#34;引用,而不是深度复制,并且由于本地变量,它被垃圾收集。 垃圾收集参考意味着对所使用的位置完全没有参考。