【发布时间】:2015-04-21 22:57:38
【问题描述】:
我是 Python 新手,试图用随机像素填充画布。有人能告诉我为什么它是横条纹吗?
import tkinter
from random import randint
from binascii import hexlify
class App:
def __init__(self, t):
x=200
y=200
xy=x*y
b=b'#000000 '
s=bytearray(b*xy)
c = tkinter.Canvas(t, width=x, height=y);
self.i = tkinter.PhotoImage(width=x,height=y)
for k in range (0,8*xy,8):
s[k+1:k+7]=hexlify(bytes([randint(0,255) for i in range(3)]))
print (s[:100])
pixels=s.decode("ascii")
self.i.put(pixels,(0,0,x,y))
print (len(s),xy*8)
c.create_image(0, 0, image = self.i, anchor=tkinter.NW)
c.pack()
t = tkinter.Tk()
a = App(t)
t.mainloop()
给出例如:
【问题讨论】:
-
这看起来很复杂。到目前为止你做了哪些调试?
-
您的代码出错。你怎么可能让它画一条水平线?
-
为什么要以 8 个为一组进行
k循环?这是否意味着您将图像填充为 8 像素部分? -
我会尝试重构以满足
pep8与this one 之类的检查器,以便代码更清晰,更易于阅读。 -
@BryanOakley 对我来说运行正常 - 你遇到了什么错误?