最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python基于Kivy寫一個圖形桌面時鐘程序

 更新時間:2021年01月28日 11:12:23   作者:州的先生  
這篇文章主要介紹了python如何基于Kivy 寫一個桌面時鐘程序,幫助大家更好的利用python開發(fā)圖形程序,感興趣的朋友可以了解下

Kivy 是一個開源的 Python 第三方庫,可以用來快速開發(fā)應(yīng)用程序。

它有如下三個特點:

  • 跨平臺

Kivy 編寫的程序可在 Linux,Windows,OS X,Android,iOS 和 Raspberry Pi 上運行。

  • 商業(yè)友好

Kivy 基于 MIT 許可證進行開源,可以進行免費的商業(yè)使用。

  • GPU 加速

Kivy 的圖像引擎基于 Open ES 2 構(gòu)建,性能出眾。

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

  • 非原生的圖形界面;
  • 打包后的體積很大;
  • 缺乏社區(qū)支持;
  • 缺乏足夠的示例文檔;
  • 對中文的支持很差;

盡管 Kivy 有這樣的缺點,但也不失為一個優(yōu)秀的 Python 圖形界面開發(fā)庫。尤其是其能夠?qū)?yīng)用程序打包為移動設(shè)備(IOS 和安卓)可用的 APP,可以說極大地擴展了 Python 開發(fā)的邊界。

本篇文章,我們用 Kivy 寫一個桌面時鐘程序,來體驗一下 Kivy 的圖形界面開發(fā)。其最終效果如下圖所示:

本文所述程序的代碼結(jié)構(gòu)如下圖所示:

其中:

  • /font文件夾用于放置中文字體文件。在其中,我們放置了思源黑體作為圖形的中文顯示字體。
  • /imgs文件夾用于放置靜態(tài)圖片文件,在其中,我們放置了兩個方向指示圖片。
  • /kv文件夾用于存放 Kivy 界面的設(shè)計模板。
  • main.kv是主程序的界面設(shè)計模板。
  • main.py是主程序的 Python 代碼。

使用 kv 構(gòu)建界面

Kivy 提供了一種簡單且可擴展的 GUI 設(shè)計語言用來專門設(shè)計對 Kivy 的圖形界面進行設(shè)計。我們可以在.kv文件中設(shè)計好程序的圖形界面,然后在.py文件中對圖像界面進行交互控制。

在本程序中,我們一共有 3 個地方使用了 Kivy 的設(shè)計語言,它們分別是:

  • 時鐘屏幕:clockscreen.kv
  • 秒表屏幕:stopwatchscreen.kv
  • 主界面:main.kv

在時鐘屏幕中,我們按照如下方式定義構(gòu)建了一個界面:

在秒表屏幕中,我們按照如下方式定義構(gòu)建了一個界面:

最后在主界面中,引入這兩個屏幕,通過布局管理器,將其放置在了主界面中:

編寫主程序代碼

在通過 Kivy 的kv設(shè)計語言構(gòu)建好了程序界面之后,我們來編寫主程序的 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 的先天缺陷,其對中文的支持很差勁,默認(rèn)情況下,中文都會顯示成一個個豆腐塊,只能通過引入中文字體來解決:

LabelBase.register(
 name='SiyuanHeiti',
 fn_regular='./font/SourceHanSansCN-Normal.ttf'
)

然后,我們創(chuàng)建 3 個在kv文件中定義的小部件:

# 圖像按鈕
class ImageButton(ButtonBehavior,Image):
 pass

# 秒表屏幕
class StopwatchScreen(Screen):
 pass

# 時鐘屏幕
class ClockScreen(Screen):
 pass
創(chuàng)建一個名為MainApp()的類,這是程序的主類。我們把各種交互控制的方法寫在這里面:

class MainApp(App):
 sw_started = False # 秒表啟動狀態(tài)
 sw_seconds = 0 # 當(dāng)前秒表秒數(shù)

 def update(self,n):
 # 如果秒表已啟動,更新當(dāng)前秒數(shù)
 if self.sw_started:
  self.sw_seconds += n

 # 更新當(dāng)前時間
 self.root.ids['clock_screen'].ids['time'].text = time.strftime("[b]%H[/b]:%M:%S")
 # 更新秒表
 m,s = divmod(self.sw_seconds,60) # 返回一個包含商和余數(shù)的元組
 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()并調(diào)用其run()方法即可運行。

if __name__ == '__main__':
 app = MainApp()
 app.run()

小結(jié)

總體而言,使用 Kivy 編寫圖形界面程序和使用其他 Python 圖像界面庫相比,沒有多大的區(qū)別。其通過kv設(shè)計語言,很大程序上把圖形程序的界面和交互分離開來,使得程序的開發(fā)比較清晰。

如果需要使用 Kivy 開發(fā)出精美且功能強大的圖形界面,還是得深入熟悉和了解 Kivy 的各類組件。

以上就是python基于Kivy 寫一個圖形桌面時鐘程序的詳細內(nèi)容,更多關(guān)于python Kivy 寫一個桌面時鐘程序的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python+Pygame實現(xiàn)之走四棋兒游戲的實現(xiàn)

    Python+Pygame實現(xiàn)之走四棋兒游戲的實現(xiàn)

    大家以前應(yīng)該都聽說過一個游戲:叫做走四棋兒。直接在家里的水泥地上用燒完的炭火灰畫出幾條線,擺上幾顆石頭子即可。當(dāng)時的火爆程度可謂是達到了一個新的高度。本文將利用Pygame實現(xiàn)這一游戲,需要的可以參考一下
    2022-07-07
  • python spyder中讀取txt為圖片的方法

    python spyder中讀取txt為圖片的方法

    下面小編就為大家分享一篇python spyder中讀取txt為圖片的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python實現(xiàn)登錄接口的示例代碼

    Python實現(xiàn)登錄接口的示例代碼

    本篇文章主要介紹了Python實現(xiàn)登錄接口的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • python創(chuàng)建exe文件的實現(xiàn)步驟

    python創(chuàng)建exe文件的實現(xiàn)步驟

    本文主要介紹了python創(chuàng)建exe文件的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 如何設(shè)置PyCharm中的Python代碼模版(推薦)

    如何設(shè)置PyCharm中的Python代碼模版(推薦)

    這篇文章主要介紹了如何設(shè)置PyCharm中的Python代碼模版,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 對Python3中bytes和HexStr之間的轉(zhuǎn)換詳解

    對Python3中bytes和HexStr之間的轉(zhuǎn)換詳解

    今天小編就為大家分享一篇對Python3中bytes和HexStr之間的轉(zhuǎn)換詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python 獲取本機ip地址的兩個方法

    python 獲取本機ip地址的兩個方法

    用python 獲取本機ip地址的多種方法,需要的朋友可以參考下
    2013-02-02
  • Python如何在終端彩色打印輸出

    Python如何在終端彩色打印輸出

    大家好,本篇文章主要講的是Python如何在終端彩色打印輸出,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Python Des加密解密如何實現(xiàn)軟件注冊碼機器碼

    Python Des加密解密如何實現(xiàn)軟件注冊碼機器碼

    這篇文章主要介紹了Python Des加密解密如何實現(xiàn)軟件注冊碼機器碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python編程django實現(xiàn)同一個ip十分鐘內(nèi)只能注冊一次

    Python編程django實現(xiàn)同一個ip十分鐘內(nèi)只能注冊一次

    這篇文章主要介紹了Python編程django實現(xiàn)同一個ip十分鐘內(nèi)只能注冊一次的相關(guān)內(nèi)容,具有一定參考價值。需要的朋友可以了解下。
    2017-11-11

最新評論

江孜县| 东平县| 孝昌县| 高唐县| 佳木斯市| 东安县| 沈丘县| 嘉鱼县| 屏南县| 祁东县| 盱眙县| 陕西省| 奉节县| 安庆市| 广西| 溧阳市| 大埔区| 新丰县| 蒙阴县| 堆龙德庆县| 阿拉善左旗| 广西| 临沂市| 石屏县| 页游| 类乌齐县| 翼城县| 尤溪县| 内乡县| 西华县| 沅江市| 漯河市| 曲沃县| 教育| 西吉县| 曲阳县| 商都县| 历史| 鄂温| 麻城市| 漾濞|