python canvas 拖拽和移动事件

python canvas 拖拽和移动事件,第1张

"""

draw elastic shapes on a canvas on drag, move on right click

see canvasDraw_tags*.py for extensions with tags and animation

"""

from tkinter import *

trace = False

class CanvasEventsDemo:

def init (self, parent=None):

canvas = Canvas(width=300, height=300, bg='beige')

canvas.pack()

canvas.bind('<ButtonPress-1>', self.onStart) # click

canvas.bind('<B1-Motion>', self.onGrow) # and drag

canvas.bind('<Double-1>', self.onClear) # delete all

canvas.bind('<ButtonPress-3>', self.onMove) # move latest

self.canvas = canvas

self.drawn = None

self.kinds = [canvas.create_oval, canvas.create_rectangle]

if name == ' main ':

CanvasEventsDemo()

mainloop()

from tkinter import *

def onCanvasClick(event):

print('Got canvas click', event.x, event.y, event.widget)

def onObjectClick(event):

print('Got object click', event.x, event.y, event.widget, end=' ')

print(event.widget.find_closest(event.x, event.y)) # find text object's ID

root = Tk()

canv = Canvas(root, width=100, height=100)

obj1 = canv.create_text(50, 30, text='Click me one')

obj2 = canv.create_text(50, 70, text='Click me two')

canv.bind('<Double-1>', onCanvasClick) # bind to whole canvas

canv.tag_bind(obj1, '<Double-1>', onObjectClick)# bind to drawn item

canv.tag_bind(obj2, '<Double-1>', onObjectClick)# a tag works here too

canv.pack()

root.mainloop()

类似HTML5的canvas一样,在python语言的GUI可视化设计中,也有画布canvas。在canvas上,可以绘制直线、矩形、圆形等。

第一步,打开已创建python项目的eclipse工具,新建python文件,并定义一个窗口。

第二步,定义一个拖动按钮,初始化按钮文本内容,添加一个事件。

第三步,再声明一个canvas画布,背景色为绿色,宽度和高度都为200。

第四步,分别定义四个坐标变量a1、a2、b1和b2,使用create_line绘制直线。

第五步,设置完毕之后,运行这个文件,然后查看画布展示的效果。

第六步,修改canvas的背景色,保存文件再次预览查看效果,背景色发生了改变。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11427129.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存