2015-05-01 2 views
1

Я только сейчас вхожу в мир tkinter, и кажется, что это сбивает с толку. Для начала я пытался сделать аналоговые часы, чтобы сделать это, я сделал 3 изображения, каждая из которых будет накладываться поверх каждого другого, проблема в том, что я не могу заставить сразу всех трех сразу увидеть. Я думал о том, чтобы вставить каждого на пустой образ, а затем создать это изображение, но я думаю, что должен быть лучший способ. Это то, что я до сих пор:Наложение изображений в tkinter

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() 
+0

Не ответ на вопрос, но вместо загрузки и поворота изображений, возможно, гораздо проще нарисовать руки часов, используя простые геометрические фигуры - если только эти руки не украшены орнаментом или материалом. –

+0

@tobias_k Спасибо, я посмотрю на это, но я понятия не имею, как нарисовать оружие, не могли бы вы указать на меня в правильном направлении? – vega2015

ответ

1

Для рук можно использовать метод create_line:

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

но вы хотите анимации вы можете посмотреть на другие примеры и идти оттуда, например

Смежные вопросы