启动前的启动画面(加载图像)屏幕中心

splash (loading image) center of screen before main starts

我有一张图片 (400x400),我希望它作为初始图片(在主 program/code 开始之前)在我的屏幕中央 (1920x1080)。我的问题是我的初始图像周围变成了黑色 screen/window。我的代码:

import tkinter as tk
root = tk.Tk()

root.overrideredirect(True)
width = root.winfo_screenwidth()
height= root.winfo_screenheight()
root.geometry('%dx%d+%d+%d' % (width*0.8, height*0.8, width*0.1, height*0.1))
image_file="test.gif"
image = tk.PhotoImage(file=image_file)
canvas = tk.Canvas(root, height=height*0.8, width=width*0.8, bg='black')
canvas.create_image(width*0.8/2, height*0.8/2, image=image)
canvas.pack()

root.after(5000, root.destroy)
root.mainloop()

启动画面周围出现黑屏

这是我的初始图片

谢谢大家!

如 cool cloud 所述,建议将 canvas 精确设置为 400x400 的几何尺寸,但您可能还必须移除 canvas 周围的白色高光。您可以通过以下方法实现:-

canvas.config(highlightthickness=0)

完成后就可以开始了,但是要采取额外措施, 如果您仍然看到启动画面中有一些泄漏 canvas,您可以执行以下操作:

root.attributes('-transparentcolor',"lime")

这将使 canvas 完全不对用户可见。

注意:- 为了使上述工作正常,您必须将 canvas 的颜色设置为与图像中的任何颜色完全不同。 因为此方法完全移除 window 的颜色并使其透明

希望这有效

这是我的最终答案,获取图像大小,然后使 window 与图像一样长和宽,然后将 window 放在中心,这确实包括一些简单的计算:

from tkinter import *

root     = Tk()
img_file = "test.gif"
image    = PhotoImage(file=img_file)
w,h      = image.width(), image.height()

screen_width  = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

x = (screen_width  / 2) - (w / 2)
y = (screen_height / 2) - (h / 2)

root.overrideredirect(True)
root.geometry(f'{w}x{h}+{int(x)}+{int(y)}')

canvas = Canvas(root, highlightthickness=0)
canvas.create_image(0,0, image=image, anchor='nw')
canvas.pack(expand=1,fill='both')

root.after(5000, root.destroy)

root.mainloop()

使用 root.eval('tk::PlaceWindow . center') 的问题是它把 window 的左上角放在了中心,所以整个应用不是 居中本身