本篇文章小编给大家分享一下python基于Kivy写一个图形桌面时钟程序代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

Kivy 是一个开源的 Python 第三方库,可以用来快速开发应用程序。

它有如下三个特点:

跨平台

Kivy 编写的程序可在 pnux,Windows,OS X,Android,iOS 和 Raspberry Pi 上运行。

商业友好

Kivy 基于 MIT 许可证进行开源,可以进行免费的商业使用。

GPU 加速

Kivy 的图像引擎基于 Open ES 2 构建,性能出众。

除此之外 Kivy 也存在一些缺点,比如:

非原生的图形界面;

打包后的体积很大;

缺乏社区支持;

缺乏足够的示例文档;

对中文的支持很差;

尽管 Kivy 有这样的缺点,但也不失为一个优秀的 Python 图形界面开发库。尤其是其能够将应用程序打包为移动设备(IOS 和安卓)可用的 APP,可以说极大地扩展了 Python 开发的边界。

本篇文章,我们用 Kivy 写一个桌面时钟程序,来体验一下 Kivy 的图形界面开发。其最终效果如下图所示:

本文所述程序的代码结构如下图所示:

其中:

/font文件夹用于放置中文字体文件。在其中,我们放置了思源黑体作为图形的中文显示字体。

/imgs文件夹用于放置静态图片文件,在其中,我们放置了两个方向指示图片。

/kv文件夹用于存放 Kivy 界面的设计模板。

main.kv是主程序的界面设计模板。

main.py是主程序的 Python 代码。

使用 kv 构建界面

Kivy 提供了一种简单且可扩展的 GUI 设计语言用来专门设计对 Kivy 的图形界面进行设计。我们可以在.kv文件中设计好程序的图形界面,然后在.py文件中对图像界面进行交互控制。

在本程序中,我们一共有 3 个地方使用了 Kivy 的设计语言,它们分别是:

时钟屏幕:clockscreen.kv

秒表屏幕:stopwatchscreen.kv

主界面:main.kv

在时钟屏幕中,我们按照如下方式定义构建了一个界面:

在秒表屏幕中,我们按照如下方式定义构建了一个界面:

最后在主界面中,引入这两个屏幕,通过布局管理器,将其放置在了主界面中:

编写主程序代码

在通过 Kivy 的kv设计语言构建好了程序界面之后,我们来编写主程序的 Python 代码。

首先,引入所需的模块:

from kivy.app import App

from kivy.uix.screenmanager import Screen,SlideTransition

from kivy.core.text import LabelBase

from kivy.uix.button import ButtonBehavior

from kivy.uix.image import Image

from kivy.clock import Clock

import time

接着,配置一下中文字体。因为 Kivy 的先天缺陷,其对中文的支持很差劲,默认情况下,中文都会显示成一个个豆腐块,只能通过引入中文字体来解决:

LabelBase.register(

name='SiyuanHeiti',

fn_regular='./font/SourceHanSansCN-Normal.ttf'

)

然后,我们创建 3 个在kv文件中定义的小部件:

# 图像按钮

class ImageButton(ButtonBehavior,Image):

pass

# 秒表屏幕

class StopwatchScreen(Screen):

pass

# 时钟屏幕

class ClockScreen(Screen):

pass

创建一个名为MainApp()的类,这是程序的主类。我们把各种交互控制的方法写在这里面:

class MainApp(App):

sw_started = False # 秒表启动状态

sw_seconds = 0 # 当前秒表秒数

def update(self,n):

# 如果秒表已启动,更新当前秒数

if self.sw_started:

self.sw_seconds += n

# 更新当前时间

self.root.ids['clock_screen'].ids['time'].text = time.strftime("[b]%H[/b]:%M:%S")

# 更新秒表

m,s = divmod(self.sw_seconds,60) # 返回一个包含商和余数的元组

self.root.ids['stopwatch_screen'].ids['stopwatch'].text = ("%02d: %02d.[size=40]%02d[/size]" % (int(m),int(s),int(s*100%100)))

# 重写程序启动的事件

def on_start(self):

Clock.schedule_interval(self.update,0)

# 开始/停止

def start_stop(self):

self.root.ids['stopwatch_screen'].ids['start_stop'].text = '启动' if self.sw_started else '停止'

self.sw_started = not self.sw_started

# 重置秒表

def reset(self):

if self.sw_started:

self.root.ids['stopwatch_screen'].ids['start_stop'].text = '启动'

self.sw_started = False

self.sw_seconds = 0

def go_forward(self):

screen_manager = self.root.ids['screen_manager']

screen_manager.transition = SlideTransition(direction="right")

screen_manager.current = "stopwatch_screen"

def go_back(self):

screen_manager = self.root.ids['screen_manager']

screen_manager.transition = SlideTransition(direction="left")

screen_manager.current = "clock_screen"

这样,这个程序就完成了。我们实例化MainApp()并调用其run()方法即可运行。

if __name__ == '__main__':

app = MainApp()

app.run()

python kivy显示图片_python基于Kivy写一个图形桌面时钟程序代码示例相关推荐

  1. python时钟程序的设计总结_python基于Kivy写一个图形桌面时钟程序

    kivy 是一个开源的 python 第三方库,可以用来快速开发应用程序. 它有如下三个特点: 跨平台 kivy 编写的程序可在 linux,windows,os x,android,ios 和 ra ...

  2. python开发桌面时钟_python基于Kivy写一个图形桌面时钟程序

    Kivy 是一个开源的 Python 第三方库,可以用来快速开发应用程序. 它有如下三个特点: 跨平台 Kivy 编写的程序可在 Linux,Windows,OS X,Android,iOS 和 Ra ...

  3. python鼠标绘图_python 基于opencv 实现一个鼠标绘图小程序

    需求 在画布上用鼠标画图,可以画圆或矩形,按m键在两种模式下切换.左键按下时开始画图,移动到哪儿画到哪儿,左键释放时结束画图. 实现思想 用鼠标画图:需要定义鼠标的回调函数mouse_event 画圆 ...

  4. python tkinter计算器实例_Python编程使用tkinter模块实现计算器软件完整代码示例

    Python 提供了多个图形开发界面的库.Tkinter就是其中之一. Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数 ...

  5. python求扇形面积_Python随机生成均匀分布在单位圆内的点代码示例

    Python有一随机函数可以产生[0,1)区间内的随机数,但是如果我们想生成随机分布在单位圆上的,那么我们可以首先生成随机分布在单位圆边上的点,然后随机调整每个点距离原点的距离,但是我们发现这个距离不 ...

  6. python label显示图片_python 实现在tkinter中动态显示label图片的方法

    在编程中我们往往会希望能够实现这样的操作:点击Button,选择了图片,然后在窗口中的Label处显示选到的图片.那么这时候就需要如下代码: from tkinter import * from tk ...

  7. python matplotlib显示图片_Python OpenCV ——Matplotlib显示图片

    Color image loaded by OpenCV is in BGR mode.But Matplotlib displays in RGB mode.So color images will ...

  8. python输出字母金字塔_python实现输入任意一个大写字母生成金字塔的示例

    输入任意一个大写字母,生成金字塔图形 def GoldTa(input): L = [chr(i) for i in range(65, 91)] # 大写字母A--Z idA = 65 # 从A开始 ...

  9. python kivy显示图片_Kivy 图形界面开发初体验

    本文是觅道文档连载教程<使用Kivy构建现代桌面GUI应用> 的第一个实例,如需细致的介绍,可点击此处进行阅读 Kivy 是一个开源的 Python 第三方库,可以用来快速开发应用程序. ...

最新文章

  1. 全球及中国回流冷凝管行业发展前景整体预测及十四五发展趋向展望报告2022-2027年版
  2. 反思避免只是小聪明:更加稳重 更加踏实
  3. mysql error code 145,MYSQL 错误#145解决方法
  4. hmc如何进入aix系统_linux系统中如何进入退出vim编辑器,方法及区别
  5. (三)Maven仓库介绍与本地仓库配置
  6. P5024-保卫王国【动态dp,最小覆盖集】
  7. eclipse和mysql创建ssm_Eclipse下SSM项目的搭建
  8. 研华自动驾驶计算机,ADVANTECH研华TPC-1582H-433BE 工业平板电脑一体机计算机工控机...
  9. 前端学数据库之子查询
  10. vs没有windows窗体应用_既能防木马病毒又能多开应用,这款软件 Windows 不能没有!...
  11. cad快速看图能合并图纸吗_【CAD快速看图电脑版】合并图纸、2张图之间复制
  12. 1:500城镇地形图测绘已正式启动
  13. Trojan Killer(木马查杀工具)官方版
  14. Ubuntu学习NO5.高效工作方式
  15. ECMAScript - 字符串的部分使用方法
  16. java 实现秒抢_Java实现抢红包算法,附完整代码(公平版和手速版)
  17. matlab如何在文中定义函数
  18. Linux shell基础之变量声明和处理
  19. 2万字系统总结,带你实现 Linux 命令自由?
  20. 关于ESP8266自动下载和CH340的几件事

热门文章

  1. VS2008C#Sqlserver2008数据库的连接,增删改查
  2. python求黑洞数_求解黑洞数
  3. 掌控板教程 | 掌控板 V1.1 测试版语音识别初体验
  4. redis保存下来,自己慢慢享用
  5. 体验文心一言AI大模型生成马云、马化腾和马东敏简介
  6. Python爬取网站图片数据
  7. android native ALooper AHandler
  8. 丽博的超预期广州建博会:年轻多元、智能科技、直播破界
  9. python传奇自动打怪脚本_传奇自动刷怪脚本,节省服务器资源
  10. FreeRTOS原函数库API