鱼C论坛

 找回密码
 立即注册
查看: 2158|回复: 2

[已解决]tkinter-canvas的问题

[复制链接]
发表于 2017-4-27 13:25:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大家好,代码如下。。初学者想问两个问题。。。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from tkinter import *
from pymouse import *
import wx

root = Tk()  # 创建窗口
root.title("HNumber")  # 给窗口命名


#创建frame的框架,窗口window为这个框架的父容器
frame = Frame(root)
frame.pack()
#创建画布
w = Canvas(
           root,
           width=200,
           height=200,
           background="yellow"
          )
#获取坐标
def dragEVT(event):
    x1,y1 = (event.x-5),(event.y-5)
    x2,y2 = (event.x+5),(event.y+5)
    w.create_oval(x1,y1,x2,y2,fill="red")
w.bind("<Button-1>",dragEVT)
w.pack()
#创建按钮
Button(root, text="确认", width=19, bg="red", relief="raised").pack()
Button(root, text="我要重新写", width=19, bg="red", relief="raised",command=(lambda x=ALL:w.delete(x))).pack()
mainloop()

1.鼠标点击一次绘制一个椭圆,没有办法说按着鼠标就进行绘制。。。请问该怎么解决呢?
2.如果绘制完成了,。。。想要按下确认键使canvas称为一张图片。。请问canvas是否有函数实现呢?如果没有是不是只能使用截屏啊。。?
最佳答案
2017-4-27 14:41:14

  1. >>> import tkinter as tk
  2. >>> root=tk.Tk()
  3. >>> cnv=tk.Canvas(
  4.         root,
  5.         width=200,
  6.         height=200,
  7.         background="yellow"
  8. )
  9. >>> cnv.pack()
  10. >>> dragflag=False
  11. >>> def bp(e):
  12.         global dragflag
  13.         dragflag=True

  14.        
  15. >>> def br(e):
  16.         global dragflag
  17.         dragflag=False

  18. >>> cnv.bind("<ButtonPress>",bp)#鼠标键 按下
  19. >>> cnv.bind("<ButtonRelease>",br)#鼠标键 抬起
  20. >>> def dragEVT(event):
  21.     global dragflag
  22.     if not dragflag:return
  23.     x1,y1 = (event.x-5),(event.y-5)
  24.     x2,y2 = (event.x+5),(event.y+5)
  25.     cnv.create_oval(x1,y1,x2,y2,fill="red")

  26.    
  27. >>> cnv.bind("<Motion>",dragEVT)#鼠标 移动
复制代码

代码

代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-27 14:41:14 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +5 鱼币


  1. >>> import tkinter as tk
  2. >>> root=tk.Tk()
  3. >>> cnv=tk.Canvas(
  4.         root,
  5.         width=200,
  6.         height=200,
  7.         background="yellow"
  8. )
  9. >>> cnv.pack()
  10. >>> dragflag=False
  11. >>> def bp(e):
  12.         global dragflag
  13.         dragflag=True

  14.        
  15. >>> def br(e):
  16.         global dragflag
  17.         dragflag=False

  18. >>> cnv.bind("<ButtonPress>",bp)#鼠标键 按下
  19. >>> cnv.bind("<ButtonRelease>",br)#鼠标键 抬起
  20. >>> def dragEVT(event):
  21.     global dragflag
  22.     if not dragflag:return
  23.     x1,y1 = (event.x-5),(event.y-5)
  24.     x2,y2 = (event.x+5),(event.y+5)
  25.     cnv.create_oval(x1,y1,x2,y2,fill="red")

  26.    
  27. >>> cnv.bind("<Motion>",dragEVT)#鼠标 移动
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-27 23:03:02 | 显示全部楼层

啊啊啊啊~太感谢了大佬~~~那麻烦问一下大佬那个。。。canvas成图片的大佬知道大概的思路咩?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-27 05:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表