fishyboteso/fishy/gui/splash.py

64 lines
1.8 KiB
Python
Raw Normal View History

import logging
import time
2021-05-09 06:32:36 +00:00
import tkinter as tk
from multiprocessing import Process, Queue
2022-02-02 22:13:01 +00:00
from threading import Thread
2021-05-09 07:05:51 +00:00
from PIL import Image, ImageTk
from fishy.helper import helper
2021-05-09 07:05:51 +00:00
from fishy.helper.config import config
class Splash:
def __init__(self):
self.q = Queue()
self.process = Process(name=Splash.__name__, target=self.show, args=(config.get("win_loc"), self.q,))
def finish(self):
self.q.put("stop")
def start(self):
self.process.start()
return self
def show(self, win_loc, q):
logging.debug("started splash process")
dim = (300, 200)
top = tk.Tk()
top.overrideredirect(True)
top.lift()
top.attributes('-topmost', True)
top.title("Loading...")
top.resizable(False, False)
top.iconbitmap(helper.manifest_file('icon.ico'))
2021-02-14 11:03:39 +00:00
canvas = tk.Canvas(top, width=dim[0], height=dim[1], bg='white')
canvas.pack()
top.image = Image.open(helper.manifest_file('fishybot_logo.png')).resize(dim)
top.image = ImageTk.PhotoImage(top.image)
canvas.create_image(0, 0, anchor=tk.NW, image=top.image)
2022-02-02 22:13:01 +00:00
# Position splash at the center of the main window
2022-02-02 22:13:01 +00:00
default_loc = (str(top.winfo_reqwidth()) + "+" + str(top.winfo_reqheight()) + "+" + "0" + "0")
loc = (win_loc or default_loc).split(":")[-1].split("+")[1:]
top.geometry("{}x{}+{}+{}".format(dim[0], dim[1], int(loc[0]) + int(dim[0] / 2), int(loc[1]) + int(dim[1] / 2)))
def waiting():
q.get()
time.sleep(0.2)
running[0] = False
Thread(target=waiting).start()
running = [True]
while running[0]:
top.update()
time.sleep(0.1)
top.destroy()
logging.debug("ended splash process")