python时钟程序的设计总结_python基于Kivy写⼀个图形桌⾯
时钟程序
kivy 是⼀个开源的 python 第三⽅库,可以⽤来快速开发应⽤程序。
它有如下三个特点:
跨平台
kivy 编写的程序可在 linux,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
ext import labelbase
from kivy.uix.button import buttonbehavior
from kivy.uix.image import image
python怎么读取桌面上的文件from kivy.clock import clock
import time
接着,配置⼀下中⽂字体。因为 kivy 的先天缺陷,其对中⽂的⽀持很差劲,默认情况下,中⽂都会显⽰成⼀个个⾖腐块,只能通过引⼊中⽂字体来解决:
name='siyuanheiti',
fn_regular='./f'
)
然后,我们创建 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
# 更新当前时间
# 更新秒表
m,s = divmod(self.sw_seconds,60) # 返回⼀个包含商和余数的元组
# 重写程序启动的事件
def on_start(self):
clock.schedule_interval(self.update,0)
# 开始/停⽌
def start_stop(self):
self.sw_started = not self.sw_started
# 重置秒表
def reset(self):
if self.sw_started:
self.sw_started = false
self.sw_seconds = 0
def go_forward(self):
screen_manager = ids['screen_manager']
ansition = slidetransition(direction="right")
screen_manager.current = "stopwatch_screen"
def go_back(self):
screen_manager = ids['screen_manager']
ansition = slidetransition(direction="left")

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。