首页 > 解决方案 > 如何使用按钮执行涉及图像的功能

问题描述

我正在使用老虎机进行一个项目,并尝试制作一个支付率屏幕,它会向您显示您可以滚动的所有图像以及它们增加了多少赌注。为此,我有这个功能和下面显示的按钮

def show_info():
    odds = Tk()
    odds.title("Odds")
    fresh_monky_img_odds = Image.open("freshmonky.gif")
    fresh_monky_img_odds = fresh_monky_img_odds.resize((75, 75))
    fresh_monky_img_odds = ImageTk.PhotoImage(fresh_monky_img_odds)
    test_btn = Button(odds, image = fresh_monky_img_odds, width = 40, height = 40)
    test_btn.pack()
    odds.geometry("300x300")
    odds.mainloop()
odds_btn = Button(slots, height = 2, width = 30, text = "Odds", command = show_info)
odds_btn.pack()

该函数本身可以工作,因为我通过在没有按钮的情况下调用该函数来测试它并且它工作正常,但是使用按钮它不起作用

我得到的错误是: _tkinter.TclError: image "pyimage10" doesn't exist

标签: pythonpython-3.xtkinterpython-imaging-library

解决方案


您可以使用多个 Tk() 窗口,但如果这样做,则在创建照片图像时,您需要在 wich 窗口中指定您将使用它们,因此如果您替换此行

fresh_monky_img_odds = ImageTk.PhotoImage(fresh_monky_img_odds)

通过这条线

fresh_monky_img_odds = ImageTk.PhotoImage(master=odds ,image fresh_monky_img_odds)

如果 id 也不起作用,请将图像的引用保存在全局变量中。以下脚本应该可以工作:

fresh_monky_img_odds = "none"
def show_info():
    global fresh_monky_img_odds
    odds = Tk()
    odds.title("Odds")
    fresh_monky_img_odds = Image.open("freshmonky.gif")
    fresh_monky_img_odds = fresh_monky_img_odds.resize((75, 75))
    fresh_monky_img_odds = ImageTk.PhotoImage(master=odds ,image fresh_monky_img_odds)
    test_btn = Button(odds, image = fresh_monky_img_odds, width = 40, height = 40)
    test_btn.pack()
    odds.geometry("300x300")
    odds.mainloop()
odds_btn = Button(slots, height = 2, width = 30, text = "Odds", command = show_info)
odds_btn.pack()

推荐阅读