在tkinter中叠加图像

时间:2015-05-01 03:46:17

标签: image python-3.x tkinter overlay pillow

我刚刚进入tkinter的世界,似乎令人困惑。为了开始,我一直在尝试制作一个模拟时钟,为此我已经制作了3张图片,每张图片将叠加在彼此之上,问题是我似乎无法立刻让所有三个都可见。我想把每个粘贴到一张空白图像然后创建那个图像,但我认为必须有一个更好的方法。这就是我到目前为止所做的:

import time
from tkinter import *
from PIL import Image,ImageTk
root = Tk()
root.geometry ("1000x700+750+200")
root.title("Analog Clock")
seconds = int(time.strftime("%S"))
minutes = int(time.strftime("%M"))
hours = int(time.strftime("%H"))
if hours>12:
    hours=hours-12
secondssize=(100,100)
secondsangle = 6*seconds
minutessize=(100,300)
minutesangle = 6*minutes
hourssize=(100,200)
hoursangle = 30*hours
space = Canvas(root, width=500, height=500, bg="white")
space.pack()
im = Image.open("pointer.jpg")
im = im.convert('RGBA')
im2 = im.copy()
im3 = im.copy()
secondsimage = im.rotate(-secondsangle, expand=1).resize(secondssize)
secondsimage = ImageTk.PhotoImage(secondsimage)
space.create_image(250, 250, image=secondsimage)
minutesimage = im2.rotate(-minutesangle, expand=1).resize(minutessize)
minutesimage = ImageTk.PhotoImage(minutesimage)
space.create_image(250, 250, image=minutesimage)
hoursimage = im3.rotate(-hoursangle, expand=1).resize(hourssize)
hoursimage = ImageTk.PhotoImage(hoursimage)
space.create_image(250, 250, image=hoursimage)
root.mainloop()

1 个答案:

答案 0 :(得分:1)

对于武器,您可以使用create_line方法:

space.create_line((250, 250, 250, 10), fill="black", width=3)

但你想要一个动画,你可能想看看其他的例子并从那里去,例如 http://effbot.org/zone/tkinter-animation.htm