Нарисуйте графический интерфейс, который переопределяет другой графический интерфейс в Tkinter - PullRequest
0 голосов
/ 13 мая 2019

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

from tkinter import *

class Load_Screen:

    def __init__(self, master):
        self.master = master
        self.master.configure(background='white')
        self.frame = Frame(self.master)
        self.frame.pack()

        self.canvas = Canvas(self.frame, width = 350, height = 250)
        self.canvas.configure(background='white')
        self.canvas.pack()

        self.img = PhotoImage(file="image/loading.png")
        self.canvas.create_image(55,150, anchor=W, image=self.img)

        newWindow = Toplevel(self.master)
        newWindow.geometry("700x500")
        app = Main_Screen(newWindow)

class Main_Screen:

    def __init__(self, master):
        self.master = master
        self.frame = Frame(self.master)
        self.frame.pack()

def main(): 
    root = Tk()
    root.geometry("760x600")
    app = Load_Screen(root)

    root.mainloop()

if __name__ == '__main__':
    main()

Однако экран загрузки переопределяет основной экран. А я хочу наоборот, нижний загрузочный экран и главный экран выше

1 Ответ

1 голос
/ 15 мая 2019

Это мое решение, которое я нашел на Как заставить окно Tkinter перейти на передний план?

from tkinter import *

class Load_Screen:

    def __init__(self, master):
        self.master = master
        self.master.configure(background='white')
        self.frame = Frame(self.master)
        self.frame.pack()

        self.canvas = Canvas(self.frame, width = 350, height = 250)
        self.canvas.configure(background='white')
        self.canvas.pack()

        self.img = PhotoImage(file="image/loading.png")
        self.canvas.create_image(55,150, anchor=W, image=self.img)

        newWindow = Toplevel(self.master)
        newWindow.geometry("700x500")
        app = Main_Screen(newWindow)

class Main_Screen:

    def __init__(self, master):
        self.master = master
        self.frame = Frame(self.master)
        self.frame.pack()

def main(): 
    root = Tk()
    root.geometry("760x600")
    root.lift()
    app = Load_Screen(root)

    root.mainloop()

if __name__ == '__main__':
    main()

Использовать root.lift (), чтобы сделать Load_Screen ниже Main_Screen

...