Как использовать кнопку для выполнения функции, которая включает в себя изображения - PullRequest
0 голосов
/ 15 января 2020

Я работаю над проектом с игровыми автоматами и пытаюсь создать экран ставок выплат, где он покажет вам все изображения, которые вы можете сделать, и насколько они увеличивают вашу ставку. Для этого у меня есть эта функция и кнопка, показанная ниже

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

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Вы можете использовать несколько Tk () windows, но если вы сделаете это, при создании фотоизображений вам нужно будет указать в каком окне вы будете их использовать, поэтому если вы замените эту строку

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()
0 голосов
/ 16 января 2020

Вы можете использовать Tk () только 1 раз для создания экрана. Таким образом, для создания нового экрана используйте снова Tk (). Таким образом, вы можете использовать Toplevel () для создания нового экрана. проверить исправление в коде.

> def show_info():
    odds = Toplevel(root)  #instead of root your main screen name
    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()
...