Ich habe ein Hauptfenster, das bis zu ein paar Sekunden dauern kann, um korrekt geladen zu werden. Aus diesem Grund möchte ich einen Begrüßungsbildschirm haben, der zeigt, bis die Methode init der Hauptklasse beendet ist, und die Haupt-tkinter-Anwendung kann angezeigt werden. Wie kann dies erreicht werden?Tkinter Splash Screen anzeigen und Hauptbildschirm ausblenden, bis __init__ beendet ist
Splash Screen Code:
from Tkinter import *
from PIL import Image, ImageTk
import ttk
class DemoSplashScreen:
def __init__(self, parent):
self.parent = parent
self.aturSplash()
self.aturWindow()
def aturSplash(self):
self.gambar = Image.open('../output5.png')
self.imgSplash = ImageTk.PhotoImage(self.gambar)
def aturWindow(self):
lebar, tinggi = self.gambar.size
setengahLebar = (self.parent.winfo_screenwidth()-lebar)//2
setengahTinggi = (self.parent.winfo_screenheight()-tinggi)//2
self.parent.geometry("%ix%i+%i+%i" %(lebar, tinggi, setengahLebar,setengahTinggi))
Label(self.parent, image=self.imgSplash).pack()
if __name__ == '__main__':
root = Tk()
root.overrideredirect(True)
progressbar = ttk.Progressbar(orient=HORIZONTAL, length=10000, mode='determinate')
progressbar.pack(side="bottom")
app = DemoSplashScreen(root)
progressbar.start()
root.after(6010, root.destroy)
root.mainloop()
Haupt tkinter Fenster Mindestarbeitsbeispiel:
import tkinter as tk
root = tk.Tk()
class Controller(tk.Frame):
def __init__(self, parent):
'''Initialises basic variables and GUI elements.'''
frame = tk.Frame.__init__(self, parent,relief=tk.GROOVE,width=100,height=100,bd=1)
control = Controller(root)
control.pack()
root.mainloop()
EDIT: ich das Hauptfenster verwenden können, bis sie Laden mit dem .withdraw() und beendet ist. deiconify() Methoden. Mein Problem ist jedoch, dass ich keine Möglichkeit finde, den Begrüßungsbildschirm zwischen diesen beiden Methodenaufrufen zu verwenden.
Vielleicht ist dies ein XY-Problem. Warum dauert das Laden Ihres Hauptfensters einige Minuten? Führen Sie eine Funktion in "__init__" aus, die die Ladezeit usw. verursacht? – Pythonista