如何使用Tkinter调整Splash Screen Image的大小?

时间:2016-09-12 23:38:19

标签: python canvas tkinter tkinter-canvas

我正在为一个学校项目开发游戏,并且作为其中的一部分,加载以模拟游戏的“加载”。我有代码,它确实调出了图像,但我想要它做的是将定义的.gif文件调出到屏幕上。这是代码:

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*1, height*1, width*0, height*0))
image_file = "example.gif"
image = tk.PhotoImage(file=image_file)
canvas = tk.Canvas(root, height=height*1, width=width*1, bg="darkgrey")
canvas.create_image(width*1/2, height*1/2, image=image)
canvas.pack()
root.after(5000, root.destroy)
root.mainloop()

我唯一的问题是因为图像比屏幕大,所以它不适合整个图像。如何使用此代码调整图像大小以使任何.gif图像适合屏幕?

P.S。请不要对代码进行任何真正的重大更改,因为这样做我想要的,值更改是可以的。

1 个答案:

答案 0 :(得分:2)

我建议您使用PIL 这是代码:

from PIL import Image, ImageTk
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*1, height*1, width*0, height*0))
image = Image.open(image_path)
image = image.resize((width, height), Image.ANTIALIAS)
image = ImageTk.PhotoImage(image)
canvas = tk.Canvas(root, height=height*1, width=width*1, bg="darkgrey")
canvas.create_image(width*1/2, height*1/2, image=image)
canvas.pack()
root.after(5000, root.destroy)
root.mainloop()

您可以从以下位置获得宽度和高度:

width = root.winfo_screenwidth()
height = root.winfo_screenheight()

然后调用调整大小()

如果您仍想使用PhotoImage,可以尝试缩放(x,y)子样本(x,y)。这是doc。顺便说一下,它在我的电脑上不起作用......(python2.7 + win7)