python画图程序飞机_Python使用tkinter制作一个简易的绘图程序三(Python GUI编程)...

上节课,我们使用Python中tkinter库制作了一个简易的画图板程序,基本实现了圆、椭圆、矩形、多边形、直线等图形的绘制功能。今天,我们为绘图菜单添加设置样式的功能。通过此文可以学习Python+tkinter自定义控件。

我们先看下今天要实现的功能。

d058ccbf6c81800a194466b9551cdefe838b4796.jpeg?token=7e791afa97009a7c73f1520dedabbeb4&s=6117399ACAE4648AD059C8DC030000E3点击样式设置后弹出界面

我们分下面三步对界面进行实现

【第一步】界面分析【第二步】界面实现【第三步】总结界面分析

为了实现界面整齐效果,我们使用grid布局。程序分别对椭圆、圆、圆弧、矩形、多边形、直线进行设置。界面弹出时,我们对先前的绘图样式进行加载(使用pickle序列化),样式属性包括边框颜色、边框宽度、边框样式(实线、虚线)和填充颜色。边框颜色和填充颜色设置我们使用colorchooser对象,为此,必须先进行导入(from tkinter import colorchooser),当点击颜色条(Label)时,弹出askcolor对话框。当点击【设置】按钮后,使用pickle序列化样式参数,保存到本地。点击【关闭】按钮后界面消失。如图所示

c2cec3fdfc039245a35d524662bd49c67c1e25b9.jpeg?token=5ace32203a4c9050e6aa3cb52e1d789a&s=19B7BDBA84F0759A1839E8DC03005021程序效果图

界面实现

本例主要难点有:

(一)分别对六个图形样式进行设置时,最好使用for循环来减少代码量(这就要求先期将每一行作为一个类定义好),类定义如下图所示

cdbf6c81800a19d891341feed7d36f8fa71e46d0.jpeg?token=74d6b347eb80ec281006dd42b12ed1b7&s=A0E2F3049BB188530C65F4070100A0C1类的初始化代码(类的变量初始化)

(二)对于边框颜色、边框宽度、边框样式和填充颜色,这些属性,如果使用for循环时,如何保证样式参数不被最后一个图形样式覆盖,这就需要在类初始化中将这些样式参数先定义好。类的控件定义如下图所示

908fa0ec08fa513d5aeabaf5d844b8ffb2fbd90c.jpeg?token=3c8f834b3cf53435c5edf1281f5033cf&s=E0E2B7401AE4A84B18581C0F0100A0C2类的初始化(生成控件)

(三)如何随着参数变动,获取样式参数信息,代码如下图所示

b812c8fcc3cec3fd9d030bb932a1393b869427ef.jpeg?token=94b283c91d5f014ce6c2762f1b99473c&s=A0E2F3031AE4B94F5E75540B0100E0C1类的初始化(获取样式参数)

(四)一行的类实现了,但是如何将这一行放置到界面中,我们需要定义另一个PaintFont类。这个类初始化代码如下图

a6efce1b9d16fdfa5537370c50a6615095ee7bac.jpeg?token=0606d9e0512ddea925c73657a44ed66b&s=E0E2B3421AA1805B5E41BD0B0100F0C2PaintFont类的实例变量初始化

0bd162d9f2d3572caeb43e586e3a8e2363d0c38b.jpeg?token=c2adab3c0214d3386f74b42e1d3035ec&s=E0E2B3441AE5814F4CD4F10F0100A0C2PaintFont类控件创建

55e736d12f2eb9382862b04a314b6831e5dd6f2e.jpeg?token=4dbbccfa64860c63822479897e05b59e&s=A0F277801EE489704E51F407000070C1获取样式参数信息并测试

总结

程序虽然实现了上述功能,但是没有绑定到主界面的菜单响应事件中。下一步,我们将该PaintFont类绑定到主界面的响应事件中。感兴趣的朋友们欢迎留言讨论。

原创不易,转载请注明出处(百家号:Python高手养成)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值