`

Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)

 
阅读更多


1. 框架代码

用 PyCharm 新建一个名为 SimplePaintApp 的项目,然后新建一个名为 simple_paint_app.py 的 PYTHON 源文件,

在代码编辑器中,输入以下框架代码

 

   1 from kivy.app import App

2 from kivy.uix.widget import Widget





5 class MyPaintWidget(Widget):

6     pass





9 class MyPaintApp(App):

10     def build(self):

11         return MyPaintWidget()

12 

13 

14 if __name__ == '__main__':

15     MyPaintApp().run()

 

运行上面的代码,将显示一个黑色背景的窗口

 

看起来很没劲的样子,不过你可不要小瞧这几行代码。这些就是简易画板的框架代码,它就像是程序的骨架,后面咪博士将会带领大家在这副骨架上添加各种新功能,逐步丰富和完善应用。

第 5 行 class MyPaintWidget(Widget): 从类 Widget 继承,构造我们的自定义窗口部件 MyPaintWidget。画板的主要逻辑将在 MyPaintWidget 这个类中实现。现在我们只写了一个 pass (第 6 行),相当于是占位符,先让整段代码跑起来,具体的功能,我们将在后面的教程中补充。

第 12 行 return MyPaintWidget() 在应用初始化时(调用 build  方法)创建并返回自定义窗口部件对象 MyPaintWidget

2. 添加交互

现在咱们的自定义窗口部件啥也干不了,接下来我们要尝试让它能够响应用户的动作。

代码如下:

 

   1 from kivy.app import App

2 from kivy.uix.widget import Widget





5 class MyPaintWidget(Widget):

6     def on_touch_down(self, touch):

7         print(touch)





10 class MyPaintApp(App):

11     def build(self):

12         return MyPaintWidget()

13 

14 

15 if __name__ == '__main__':

16     MyPaintApp().run()

 

运行修改后的代码,仍然显示一个黑色的窗口,似乎没什么变化。但是,当你用鼠标在窗口中点击的时候,发现在 PyCharm 的控制台有输出,而且随着点击位置的不同,输出的数字也会变化。

 

当用户在窗口上用鼠标点击的时候,将触发 MyPaintWidget 的 on_touch_down 方法(第 6 行)。on_touch_down 方法的 touch 参数,包含了鼠标点击时的位置信息。这里,我们还没实现什么有用的交互,只是把鼠标点击的位置信息输出到控制台,即第 7 行代码 print(touch)

【思考】

用本节的应用做实验,思考 kivy 采用的坐标系统是什么样的?(原点在哪里?x 和 y 的方向如何?)

原文链接:http://www.ipaomi.com/2017/11/15/kivy-中文教程-实例入门-简易画板-simple-paint-app:1-自定义窗口部/

分享到:
评论

相关推荐

    android安卓app开发之widget界面控件使用教程.zip

    【Android 安卓 App Widget 界面控件使用教程】 Android 安卓系统提供了一种称为 App Widget 的功能,这是一类特殊的用户界面组件,可以让应用程序的部分功能直接出现在用户的主屏幕上,无需打开应用就能进行交互。...

    Android -- AppWidget源码.zip

    在Android系统中,AppWidget是桌面小部件的实现,它允许开发者将应用程序的功能和信息集成到用户的主屏幕上,用户无需打开应用即可与之交互。这个压缩包“Android -- AppWidget源码.zip”很可能是包含了Android App...

    Android高级应用源码-Android小部件AppWidget.zip

    1. **AppWidget提供者(AppWidget Provider)**:这是Android系统与你的AppWidget交互的组件,定义了AppWidget的行为,如接收广播更新、添加、删除或更新AppWidget等。 2. **布局文件(Layout)**:定义了AppWidget...

    几何画板教程、数学题目实例.zip

    几何画板是一款强大的数学教学工具,它以图形化的方式帮助学生和教师理解各种几何概念,进行动态演示,解决数学问题。本教程集合了初中数学和高中数学的经典例题,旨在通过实际操作提升学习者的几何直观能力和解决...

    android之appwidget(一)简单appwidget

    一个AppWidget由两部分组成:AppWidget提供者(AppWidgetProvider)和布局文件。AppWidget提供者是Android的BroadcastReceiver子类,它负责处理AppWidget的生命周期事件,如添加、删除或更新。布局文件则定义了App...

    AppWidget

    AppWidget是Android系统提供的一种组件,它允许开发者在用户的主屏幕上创建自定义的小部件,无需用户启动应用程序。这种功能极大地增强了用户体验,使用户能够快速访问或控制应用的功能,而无需打开应用本身。本文将...

    组态王实例教程入门.zip_currentqca_seenui1_组态王_组态王 实例_组态王入门

    《组态王实例教程入门》是一份专门为初学者设计的指南,旨在帮助用户快速掌握组态王软件的基本操作和应用。组态王是一款强大的工业自动化监控系统开发平台,广泛应用于工业生产过程控制、楼宇自动化、环保监测等领域...

    android Launcher添加widget源码

    1. **扩展AppWidgetHost**:自定义的Launcher通常会扩展AppWidgetHost,这是一个管理Widget实例的类,负责创建和销毁Widget实例。 2. **处理Widget添加事件**:在JYCLauncher中,需要监听用户添加Widget的请求,...

    Android小部件AppWidget-IT计算机-毕业设计.zip

    3. **更新机制**:AppWidget通过`AppWidgetProviderInfo`中的`updatePeriodMillis`属性定期更新,也可以通过广播接收器即时更新。 **二、AppWidget开发步骤** 1. **创建AppWidgetProvider**:继承`...

    AppWidget学习demo

    AppWidget是Android系统提供的一种可以在桌面展示的小部件,它允许用户在主屏幕上放置应用程序的快捷方式或者小型交互式UI,无需打开应用即可进行一些简单的操作。这个"AppWidget学习demo"是一个实例,帮助开发者...

    几何画板课件介绍教程ppt

    1. 画点:单击【点工具】,然后将鼠标移动到画板窗口中单击一下,就会出现一个点。 2. 画线:单击【直尺工具】,然后拖动鼠标,将光标移动到画板窗口中单击一下,再拖动鼠标到另一位置松开鼠标,就会出现一条线段。 ...

    qml弹出自定义窗口

    创建自定义窗口意味着你需要定义一个新的`Window`实例,设置其属性如标题、大小、位置等,并在其中放置你需要显示的内容。 ```qml import QtQuick 2.0 Window { id: customWindow width: 300 height: 200 ...

    Android应用源码之Android小部件AppWidget-IT计算机-毕业设计.zip

    1. **Android小部件(AppWidget)基础** - **定义**:AppWidget是Android系统中的一种轻量级UI组件,可以直接在用户的主屏幕上显示信息并提供快捷操作。 - **组成**:一个AppWidget通常包括布局文件(XML)、提供...

    ImagesWidget.rar

    android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> android:name=".ImagesWidgetProvider"> android:name="android.appwidget.action.APPWIDGET_UPDATE" /> android:name="android...

    python动态圣诞树(自定义祝贺语)

    使用说明: 1. 运行程序后会提示输入要祝福的人的名字 2. 输入名字后会自动隐藏命令行窗口 3. 动画窗口中会显示带有个性化祝福的...这个项目适合作为 Pygame 入门学习的实例,也可以作为节日主题的动画程序开发参考。

    Uni-App从入门到实战教程[视频课程].txt打包整理.zip

    【 Uni-App 从入门到实战教程:一个全面解析的指南】 Uni-App 是一个基于 Vue.js 的跨端开发框架,允许开发者编写一次代码,同时发布到 iOS、Android、Web(H5)、微信小程序、支付宝小程序等多个平台。本教程旨在...

    安卓Android源码——小部件AppWidget.zip

    1. **AppWidget组成**:AppWidget主要由两部分构成:`AppWidgetProvider`和`布局文件`。`AppWidgetProvider`是Android的广播接收器,负责监听并处理与AppWidget相关的事件,如添加、删除或更新操作。布局文件定义了...

    动态圣诞树(带祝福语版本)python原文件源码一键启动

    使用前准备: 1. 安装 Python 2. 安装必要的库: pip install pygame ...这个项目适合作为 Pygame 入门学习的实例,也可以作为节日主题的动画程序开发参考。 (已经打包好的exe格式版本可以在我资源库中找)

    Android高级应用源码-自定义单选、多选对话框及popwindow窗口实例源码.zip

    本教程将深入讲解如何通过源码实现自定义单选对话框、多选对话框以及PopWindow窗口,以此来增强应用的交互性和美观性。 首先,我们来看自定义单选对话框。在Android的默认组件中,AlertDialog只提供了基本的单选...

Global site tag (gtag.js) - Google Analytics