Tkinter - Модульное добавление изображений - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь создать определение, которое позволит мне добавлять изображения в мой фрейм, если я передам правильный путь.

Я прочитал, что должен сохранить ссылку на изображение из этого page

Имея это в виду, я попробовал это в своем коде:

class tkinterHelper(Frame):

    def __init__(self, master):
        "initialize the frame"
        Frame.__init__(self, master)
        self.grid()

    def AddImage(self, Path, X, Y):
        self.Render = PhotoImage(Path)
        TKImage = Label(self, image=self.Render)
        TKImage.image = self.Render
        TKImage.place(x=X, y=Y, relwidth=1, relheight=1)
        return self.Render

if __name__ == "__main__":
    root = Tk()
    tkHelper = tkinterHelper(root)

    BackGround = tkHelper.AddImage("Images\\background.gif", 0, 0)

    root.mainloop()

Я думал, что если я вернусь self.render, у меня все равно будет ссылка на изображение.

Если это не то, как я могу сохранить ссылку на изображение, как я могу ссылаться на него правильно?

Я хочу сохранить это в той же структуре, в которой оно находится, потому что я собираюсьдобавлю много изображений в будущем к этому приложению.

Спасибо!

1 Ответ

0 голосов
/ 30 сентября 2018

Я исправил код, добавив определение, называемое widget_placement, в свой класс помощников

def widget_placement(self, widget, r, c, spacex, spacey, s):
    widget.grid(row=r, column=c, padx=spacex + 20, pady=spacey, sticky=s)

Затем я сделал def AddImage(self, path, X, Y) возврат только TKImage

def AddImage(self, Path, X, Y):
    self.Render = PhotoImage(file=Path)
    TKImage = Label(self, image=self.Render)
    TKImage.image = self.Render
    return TKImage

Наконец в моемГлавное, я положил изображение на сетке.

BackGround = tkHelper.AddImage("Images\\background.gif", 100, 100)
tkHelper.widget_placement(BackGround, 0, 0, 0, 0, W)
...