정상적으로로드하려면 몇 초가 걸리는 메인 tkinter 창이 있습니다. 이 때문에 메인 클래스의 초기화 메소드가 끝날 때까지 보여주는 스플래시 화면을 갖고 싶고 메인 tkinter 애플리케이션을 표시 할 수 있습니다. 어떻게이 일을 성취 할 수 있습니까?Tkinter 스플래시 화면을 보여주고 __init__이 완료 될 때까지 주 화면을 숨 깁니다.
시작 화면 코드 :
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()
홈페이지 Tkinter의 창 최소 작업 예 :
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()
편집 : 그것은 .withdraw() 등을 사용하여로드가 완료 될 때까지 내가 메인 윈도우를 사용할 수 있습니다. deiconify() 메소드. 그러나 내 문제는이 두 메서드 호출 사이의 기간에 시작 화면을 실행하는 방법을 찾을 수 없다는 것입니다.
아마도 이것은 XY 문제입니다. 기본 창에로드되는 데 몇 분이 걸리는 이유는 무엇입니까? 로드 시간 등을 일으키는'__init__' 함수를 실행하고 있습니까? – Pythonista