【发布时间】:2017-03-03 03:46:46
【问题描述】:
这是一个程序的代码,用户可以单击一个点并绘制一个点,然后随后的单击绘制更多的线,所有这些线都附加到前一行。我将如何编辑此程序以让用户按下按钮并拥有喜欢 (xp1, yp1) 然后拖动一些位置并在 (xp2, yp2) 处释放然后在 (xp1, yp1) 和 (xp2) 之间画一条线, yp2)。最后,它会让用户创建许多不同的行,然后最终能够通过按“c”来清除画布屏幕。就像我知道最后一件事必须将一些函数绑定到“c”,但我不知道它是什么。
from Tkinter import Canvas, Tk, mainloop
import Tkinter as tk
# Image dimensions
w,h = 640,480
# Create canvas
root = Tk()
canvas = Canvas(root, width = w, height = h, bg = 'white')
canvas.pack()
# Create poly line
class PolyLine(object):
def __init__(x, canvas):
x.canvas = canvas
x.start_coords = None # first click
x.end_coords = None # subsequent clicks
def __call__(x, event):
coords = event.x, event.y # coordinates of the click
if not x.start_coords:
x.start_coords = coords
return
x.end_coords = coords # last click
x.canvas.create_line(x.start_coords[0], # first dot x
x.start_coords[1], # first dot y
x.end_coords[0], # next location x
x.end_coords[1]) # next location y
x.start_coords = x.end_coords
canvas.bind("<Button-1>", PolyLine(canvas)) # left click is used
mainloop()
非常感谢您抽出宝贵时间!我真的很感激!
【问题讨论】:
标签: python tkinter draw tkinter-canvas