• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python基于Kivy写一个图形桌面时钟程序

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

    它有如下三个特点:

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

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

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

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

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

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

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

    其中:

    使用 kv 构建界面

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

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

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

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

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

    编写主程序代码

    在通过 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()

    小结

    总体而言,使用 Kivy 编写图形界面程序和使用其他 Python 图像界面库相比,没有多大的区别。其通过kv设计语言,很大程序上把图形程序的界面和交互分离开来,使得程序的开发比较清晰。

    如果需要使用 Kivy 开发出精美且功能强大的图形界面,还是得深入熟悉和了解 Kivy 的各类组件。

    以上就是python基于Kivy 写一个图形桌面时钟程序的详细内容,更多关于python Kivy 写一个桌面时钟程序的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • Python实现模拟时钟代码推荐
    • Python实现时钟显示效果思路详解
    • python使用turtle库绘制时钟
    • python实现简易动态时钟
    • python实现简易数码时钟
    • python控制台显示时钟的示例
    • Python Tkinter模块实现时钟功能应用示例
    • python+PyQT实现系统桌面时钟
    • Python+Pyqt实现简单GUI电子时钟
    • Python使用Pygame实现时钟效果
    上一篇:python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
    下一篇:python 合并多个excel中同名的sheet
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python基于Kivy写一个图形桌面时钟程序 python,基于,Kivy,写,一个,