繁体   English   中英

如何在Tkinter中使用Canvas绘制点?

[英]How can I draw a point with Canvas in Tkinter?

我想在Tkinter中绘制一个点,现在我正在使用Canvas来绘制它,但是在Canvas类中没有找到这样的方法来绘制点。 Canvas提供了一种称为crete_line(x1,y1,x2,y2) ,因此我尝试设置x1=x2,y1=y2来绘制点,但是它不起作用。

所以任何人都可以告诉我该如何做,如果使用Canvas可以做得更好,那么其他解决方案也可以接受。谢谢!

当我尝试连续放置几个像素的序列时,上面提供的解决方案似乎对我不起作用。

我找到了另一种解决方案-将椭圆的边框宽度减小为0:

canvas.create_oval(x, y, x, y, width = 0, fill = 'white')

使用create_line,您还有其他可能的解决方法:

canvas.create_line(x, y, x+1, y, fill="#ff0000")

它仅覆盖单个像素(x,y到红色)

没有方法可以在Canvas上直接提出观点。 下面的方法使用create_oval方法显示点。

尝试这个:

from Tkinter import *

canvas_width = 500
canvas_height = 150


def paint(event):
    python_green = "#476042"
    x1, y1 = (event.x - 1), (event.y - 1)
    x2, y2 = (event.x + 1), (event.y + 1)
    w.create_oval(x1, y1, x2, y2, fill=python_green)



master = Tk()
master.title("Points")
w = Canvas(master,
           width=canvas_width,
           height=canvas_height)
w.pack(expand=YES, fill=BOTH)
w.bind("<B1-Motion>", paint)

message = Label(master, text="Press and Drag the mouse to draw")
message.pack(side=BOTTOM)

mainloop()

由于更新了Tk库(在Tk 8.6.0和8.6.9之间的某个位置),create_line的行为已更改。 要在8.6.0中的(x,y)处创建一个像素点,请添加以

canvas.create_line(x, y, x+1, y, fill=color)

现在,在8.6.9上,您必须使用:

canvas.create_line(x, y, x, y, fill=color)

请注意,Debian 9使用8.6.0,而Archlinux(于2019年初)使用8.6.9,因此可移植性受到了几年的损害。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM