当前位置: 首页 > news >正文

免费服务器空间申请网站设计优化

免费服务器空间申请,网站设计优化,网站记录ip 修改,asp网站后台管理系统源码概述虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要一个简单的画图小软件,简述Python在GUI(图形用户界面)方面的应用,仅…

概述

虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要一个简单的画图小软件,简述Python在GUI(图形用户界面)方面的应用,仅供学习分享使用,如有不足之处,还请指正。

设计思路

页面布局:主要分为上下两部分 a. 绘图区域,本例以Canvas实现 b. 下部:功能区,由按钮实现

事件监听:通过给功能按钮绑定事件,来实现不同的功能,如:绘线,绘矩形等功能。

绘图区域:监听鼠标左键的按下(开始绘图)和抬起(停止绘图),再根据不同的按钮实现绘制不同的图形。

涉及知识点

开发工具:Python3.7 , PyCharm2019

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

Canvas控件提供了一个自定义的绘图区域,可以通过不同的函数来绘制不同的图形。

绘制直线 create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)

绘制带箭头的直线 create_line(self.x, self.y, event.x, event.y, arrow=LAST, fill=self.fgcolor)

绘制矩形 create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor)

绘制曲线,是通过绘制不同的点来实现的

清除图形 drawpad.delete('all')

Button 按钮控件,通过绑定(bind)不同的监听事件来实现不同的功能。

name属性设置按钮的名称,

text属性设置按钮的显示文本。

bind 绑定事件

示例效果图

本例主要实现绘制直线,带箭头的直线,曲线,矩形,清除等功能,如下所示:

   referrerpolicy=

核心代码

在本例中,主要功能如下:

创建画板

"""创建画图区域"""

self.drawpad = Canvas(self, width=win_width, height=win_height, bg=bgcolor)

self.drawpad.pack()

创建按钮

# 创建按钮

self.btn_start = Button(self, name='start', text='开始')

self.btn_start.pack(side='left', padx=10)

self.btn_pen = Button(self, name='pen', text='画笔')

self.btn_pen.pack(side='left', padx=10)

self.btn_rect = Button(self, name='rect', text='矩形')

self.btn_rect.pack(side='left', padx=10)

self.btn_clear = Button(self, name='clear', text='清屏')

self.btn_clear.pack(side='left', padx=10)

self.btn_erasor = Button(self, name='erasor', text='橡皮擦')

self.btn_erasor.pack(side='left', padx=10)

self.btn_line = Button(self, name='line', text='直线')

self.btn_line.pack(side='left', padx=10)

self.btn_line_arrow = Button(self, name='line_arrow', text='箭头直线')

self.btn_line_arrow.pack(side='left', padx=10)

self.btn_color = Button(self, name='color', text='颜色')

self.btn_color.pack(side='left', padx=10)

绑定事件

# 绑定事件

self.btn_line.bind('', self.eventManager) # 点击按钮事件

self.btn_line_arrow.bind('', self.eventManager) # 点击按钮事件

self.btn_rect.bind('', self.eventManager) # 点击按钮事件

self.btn_pen.bind('', self.eventManager) # 点击按钮事件

self.btn_erasor.bind('', self.eventManager) # 点击按钮事件

self.btn_clear.bind('', self.eventManager) # 点击按钮事件

self.btn_color.bind('', self.eventManager) # 点击按钮事件

功能实现

def eventManager(self, event):

name = event.widget.winfo_name()

print(name)

self.start_flag = True

if name == 'line':

# 左键拖动

self.drawpad.bind('', self.myline)

elif name == 'line_arrow':

self.drawpad.bind('', self.myline_arrow)

elif name == 'rect':

self.drawpad.bind('', self.myrect)

elif name == 'pen':

self.drawpad.bind('', self.mypen)

elif name == 'erasor':

self.drawpad.bind('', self.myerasor)

elif name == 'clear':

self.drawpad.delete('all')

elif name == 'color':

c = askcolor(color=self.fgcolor, print(c) # c的值 ((128.5, 255.99609375, 0.0), '#80ff00')

self.fgcolor = c[1]

def startDraw(self, event):

self.drawpad.delete(self.lastdraw)

if self.start_flag:

self.start_flag = False

self.x = event.x

self.y = event.y

def stopDraw(self, event):

self.start_flag = True

self.lastdraw = 0

def myline(self, event):

self.startDraw(event)

self.lastdraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)

def myline_arrow(self, event):

self.startDraw(event)

self.lastdraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, arrow=LAST, fill=self.fgcolor)

def myrect(self, event):

self.startDraw(event)

self.lastdraw = self.drawpad.create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor)

def mypen(self, event):

self.startDraw(event)

print('self.x=', self.x, ',self.y=', self.y)

self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)

self.x = event.x

self.y = event.y

def myerasor(self, event):

self.startDraw(event)

print('self.x=', self.x, ',self.y=', self.y)

self.drawpad.create_rectangle(event.x - 3, event.y - 3, event.x + 3, event.y + 3, fill=bgcolor)

self.x = event.x

self.y = event.y

快捷键的实现

self.master.bind('', self.hotKey) # 绑定快捷键

self.master.bind('', self.hotKey) # 绑定快捷键

self.master.bind('', self.hotKey) # 绑定快捷键

self.master.bind('', self.hotKey) # 绑定快捷键

self.drawpad.bind('', self.stopDraw) # 左键释放按钮

快捷键功能实现

def hotKey(self, event):

c = event.char

if c == 'r':

self.fgcolor = 'red'

elif c == 'g':

self.fgcolor = 'green'

elif c == 'b':

self.fgcolor = 'blue'

elif c == 'y':

self.fgcolor = 'yellow'

有需要的朋友,可点击链接下载整体代码,如下所示:

源码链接

备注

不积跬步,无以至千里;不积小流,无以成江海;锲而舍之,朽木不折,锲而不舍,金石可镂。

到此这篇关于 Python实现画图软件功能方法详解的文章就介绍到这了,更多相关 Python实现画图软件功能内容请搜索WEB开发者以前的文章或继续浏览下面的相关文章希望大家以后多多支持WEB开发者!

http://www.lbrq.cn/news/2364733.html

相关文章:

  • 网站开发软件标书范本seo优化培训学校
  • 昆山做网站优化电商还有发展前景吗
  • 轻松管理多个织梦网站新网域名查询
  • 限时抢购网站源码网站整站优化推广方案
  • 定制网页设计报价上海网站营销seo方案
  • 个人做网站怎么盈利推广普通话的文字内容
  • ...温岭做网站网络推广的话术怎么说
  • 网站后台管理系统软件百度服务商
  • 珠宝首饰网站源码最新的域名网站
  • 蒙城做网站西点培训学校
  • 常州建设网站最新国际足球世界排名
  • 美食个人网站设计作品关键词首页排名代做
  • 哪个网站上网好友情链接样式
  • mac和windows做网站浙江seo外包费用
  • 黄埔网站建设公司上海好的网络推广公司
  • 杭州建设企业网站的淘宝seo对什么内容优化
  • 服务器搭建网站方案500字湖南seo服务
  • 如何用wd做网站设计资源网站优化排名软件
  • 网络科技公司网站seo是谁
  • 大米网站模板域名大全
  • 电子商务目前就业形势优化网站技术
  • 房产信息网显示已备案是什么意思广州百度seo优化排名
  • 亚马逊海外版网站新媒体营销推广公司
  • 心理网站开发背景百度竞价点击软件
  • ip达1万的网站怎么做腾讯企点qq
  • asp.net做网站实例关键词优化的五个步骤
  • 成都前十名传媒网站建设网络平台推广方案
  • 给公司做一个网站流程软件培训班学费多少
  • 美工网站做兼职南京seo整站优化技术
  • 网站最近收录怎么开一个网站平台
  • ubuntu22 npm install electron --save-dev 失败
  • 从0开始学习R语言--Day48--Calibration Curves 评估模型
  • 前端网络性能优化
  • wpf Canvas 动态增加右键菜单
  • 2024年中国公交网络数据集(Shp/分城市)
  • [Linux 入门] Linux 引导过程、系统管理与故障处理全解析