2012-05-02 7 views
5

manipüle Fotoimaj nesneler,:Neden Photoimage yavaşlatıldı? ile

import tkinter as tk 

img = tk.PhotoImage(file="myFile.gif") 
for x in range(0,1000): 
    for y in range(0,1000): 
    img.put("{red}", (x, y)) 

koymak operasyon çok uzun zaman alır. Bunu yapmanın daha hızlı bir yolu var mı?

+0

ben onun muhtemelen sadece 'koymak()' o yavaş diyoruz ama olması değil söyleyebilirim çok yavaş olan bir iç içe geçmiş döngü (1000^2) yapmak. Ama @soulcheck sizin için doğru cevabı var. – jdi

cevap

4

bir sınırlayıcı kutu kullanın:

from Tkinter import * 
root = Tk() 
label = Label(root) 
label.pack() 
img = PhotoImage(width=300,height=300) 
data = ("{red red red red blue blue blue blue}") 
img.put(data, to=(20,20,280,280)) 
label.config(image=img) 
root.mainloop() 
+0

Bu cevabın eski olduğunu fark edersiniz, ancak veri girişi için "" {kırmızı kırmızı kırmızı kırmızı mavi mavi mavi mavi} "' nin bir girdi olarak renk sütunlarını nasıl oluşturduğunu açıklayabilir misiniz? –

+0

Figür çıktı, teşekkürler! Başka birinin buna rastlaması ve benzer bir sorusu varsa [bu makale] (http://tkinter.unpythonic.net/wiki/PhotoImage) bunu iyi açıklıyor. –

0

2d renk dizisi oluşturmayı deneyin ve bu diziyi parametre olarak put ile arayın. Bunun gibi

:

import tkinter as tk 

img = tk.PhotoImage(file="myFile.gif") 
# "#%02x%02x%02x" % (255,0,0) means 'red' 
line = '{' + ' '.join(["#%02x%02x%02x" % (255,0,0)] * 1000) + '}' 
img.put(' '.join([line] * 1000)) 
+0

noob garip yanıtı daha verimli (ve daha net) – FabienAndre

+0

@FabienAndre aye, öyle. upvoted – soulcheck

İlgili konular