как tkinter изображение сделать верхний слой - PullRequest
0 голосов
/ 04 июня 2018

У меня проблема с изображением.У меня есть текстовый виджет и картинка на заднем плане.То есть текстовая картинка над изображением.Когда я вставляю новое изображение, оно становится выше текстового виджета.И здесь мне нужна функция для перемещения нового изображения на задний план, а текст был на переднем плане.

from tkinter import*

def listbox():
    def image_get(list_):
        global image_1
        if int(list_.curselection()[0]) == 0: #by clicking on the first item listbox
            image_1 = PhotoImage(file="4.png")
            lab = Label(root, image = image_1)
            lab.place(x=0, y=0)
            #root.attributes("-alpha", 0.5)

    top = Toplevel(root)
    list_ = Listbox(top,width=20)

    list_.insert(END,'image 0','image 1','image 2','image 3','image 4','image 5', 'image 6','image 7','image 8','image 9')
    list_.pack()
    list_.bind("<Double-1>", lambda event: image_get(list_) or top.destroy())


root = Tk()
root.minsize(1000,555)
root.maxsize(1000,555)
image_1 = PhotoImage(file="0.png")
lab = Label(root, image = image_1)
lab.place(x=0, y=0)
text=Text(root)
text.place(x=0,y=0)
king = Menu(root, postcommand=lambda: listbox())
root.config(menu=king)
view = Menu(king,tearoff = 0)
#view.add_command(label='Background',command=None)
king.add_cascade(label="View",menu=view)

root.mainloop()

1 Ответ

0 голосов
/ 04 июня 2018

Вопрос о порядке размещения.Вы размещаете метку над текстовым полем в вашей функции image_get().Вместо этого вы хотите просто обновить метку, и изображение останется за текстовым полем, потому что мы не меняем его зелье, а просто меняем изображение.

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

Изменить это:

def image_get(list_):
        global image_1
        if int(list_.curselection()[0]) == 0: #by clicking on the first item listbox
            image_1 = PhotoImage(file="4.png")
            lab = Label(root, image = image_1)
            lab.place(x=0, y=0)

На это:

def image_get(list_):
        global image_1
        if int(list_.curselection()[0]) == 0: #by clicking on the first item listbox
            image_1 = PhotoImage(file="4.png")
            lab.config(image = image_1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...