【问题标题】:if master._last_child_ids is None: AttributeError: 'PhotoImage' object has no attribute '_last_child_ids'如果 master._last_child_ids 为 None: AttributeError: 'PhotoImage' 对象没有属性 '_last_child_ids'
【发布时间】:2020-06-23 10:22:50
【问题描述】:
from tkinter import *
from PIL import ImageTk, Image

root = Tk()
root.title("Images")
root.iconbitmap(r"C:\Users\DellABD\Downloads\lolol.ico")


my_img1 = ImageTk.PhotoImage(Image.open(r"E:\imagespy\illusion.jpg"))
my_img2 = ImageTk.PhotoImage(Image.open(r"E:\imagespy\scan0053.jpg"))
my_img3 = ImageTk.PhotoImage(Image.open(r"E:\imagespy\scan0054.jpg"))
my_img4 = ImageTk.PhotoImage(Image.open(r"E:\imagespy\scan0055.jpg"))
my_img5 = ImageTk.PhotoImage(Image.open(r"E:\imagespy\scan0056.jpg"))

my_img_list = [my_img1, my_img2, my_img3, my_img4, my_img5]

my_label = Label(image = my_img1)
my_label.grid(row = 0, column = 0, columnspan = 3)


def forward(image_number):
    global my_label
    global back
    global forward

    my_label.grid_forget()
    my_label = Label(my_img_list[image_number - 1])

    my_label.grid(row = 0, column = 0, columnspan = 3)

def back():
    global my_label
    global back
    global forward

    global my_label
    global back
    global forward

    my_label.grid_forget()
    my_label = Label(my_img_list[image_number - 1])

    button_forward = Button(root, text = ">>>", command = lambda: image_number + 1)
    button_back = Button(root, text = "<<<", command = lambda: image_number - 1)

    if button_back == 1:
        button_back = Buuton(rrot, text = "<<<", state = DISABLED)

    button_back.grid(row = 1, column = 0)
    button_forward.grid(row = 1, column = 2)
    my_label.grid(row = 0, column = 0, columnspan = 3)



button_back = Button(root, text = "<<<", padx = 20, pady = 20, command = back)
button_forward = Button(root, text = ">>>", padx = 20, pady = 20, command = lambda: forward(2))
button_quit = Button(root, text = "Exit", padx = 20, pady = 20, command = root.quit)

button_back.grid(row = 1, column = 0)
button_forward.grid(row = 1, column = 2)
button_quit.grid(row = 1, column = 1)

root.mainloop()

当我运行程序并按下前进按钮时,它会显示一个错误。我想通过向前按来移动下一张图片,当我按下第一张图片时会消失,但下一张图片不显示并显示错误。

如果 master._last_child_ids 为无: AttributeError:“PhotoImage”对象没有属性“_last_child_ids”

【问题讨论】:

  • 无法重现您的错误,edit 您的问题并显示Full Traceback
  • 您应该在Label(...) 中的forward()back() 函数中使用image=....
  • @stovfl:真的吗?我可以重现错误。当您单击“>>>”按钮时,您没有收到错误消息吗?
  • @BryanOakley 单击 ...:我遇到了另一个错误,但不是问题标题中显示的错误。

标签: python image tkinter image-viewer


【解决方案1】:

问题是这段代码:

Label(my_img_list[image_number - 1])

您正在尝试将图像用作标签的父/母。你需要改用这个:

Label(image=my_img_list[image_number - 1])

【讨论】:

  • 我试过了,但它给了我另一个大错误。图像没有正确显示,所有按钮都消失了。
  • @Matrix:当我进行我建议的更改时(必须在两个地方进行),图像显示并且您的问题中的错误消失了。您的代码中可能还有其他错误,但这个答案绝对解释了您在问题中给出的错误。
猜你喜欢
  • 2023-02-02
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2020-02-03
  • 2012-12-01
  • 2021-04-19
相关资源
最近更新 更多