av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python基于Kivy寫一個(gè)圖形桌面時(shí)鐘程序

瀏覽:3日期:2022-06-28 18:52:07

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

它有如下三個(gè)特點(diǎn):

跨平臺(tái)

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

商業(yè)友好

Kivy 基于 MIT 許可證進(jìn)行開(kāi)源,可以進(jìn)行免費(fèi)的商業(yè)使用。

GPU 加速

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

除此之外 Kivy 也存在一些缺點(diǎn),比如:

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

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

本篇文章,我們用 Kivy 寫一個(gè)桌面時(shí)鐘程序,來(lái)體驗(yàn)一下 Kivy 的圖形界面開(kāi)發(fā)。其最終效果如下圖所示:

python基于Kivy寫一個(gè)圖形桌面時(shí)鐘程序

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

python基于Kivy寫一個(gè)圖形桌面時(shí)鐘程序

其中:

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

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

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

時(shí)鐘屏幕:clockscreen.kv 秒表屏幕:stopwatchscreen.kv 主界面:main.kv

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

python基于Kivy寫一個(gè)圖形桌面時(shí)鐘程序

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

python基于Kivy寫一個(gè)圖形桌面時(shí)鐘程序

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

python基于Kivy寫一個(gè)圖形桌面時(shí)鐘程序

編寫主程序代碼

在通過(guò) Kivy 的kv設(shè)計(jì)語(yǔ)言構(gòu)建好了程序界面之后,我們來(lái)編寫主程序的 Python 代碼。

首先,引入所需的模塊:

from kivy.app import Appfrom kivy.uix.screenmanager import Screen,SlideTransitionfrom kivy.core.text import LabelBasefrom kivy.uix.button import ButtonBehaviorfrom kivy.uix.image import Imagefrom kivy.clock import Clockimport time

接著,配置一下中文字體。因?yàn)?Kivy 的先天缺陷,其對(duì)中文的支持很差勁,默認(rèn)情況下,中文都會(huì)顯示成一個(gè)個(gè)豆腐塊,只能通過(guò)引入中文字體來(lái)解決:

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

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

# 圖像按鈕class ImageButton(ButtonBehavior,Image): pass# 秒表屏幕class StopwatchScreen(Screen): pass# 時(shí)鐘屏幕class ClockScreen(Screen): pass

創(chuàng)建一個(gè)名為MainApp()的類,這是程序的主類。我們把各種交互控制的方法寫在這里面:class MainApp(App): sw_started = False # 秒表啟動(dòng)狀態(tài) sw_seconds = 0 # 當(dāng)前秒表秒數(shù) def update(self,n): # 如果秒表已啟動(dòng),更新當(dāng)前秒數(shù) if self.sw_started: self.sw_seconds += n # 更新當(dāng)前時(shí)間 self.root.ids[’clock_screen’].ids[’time’].text = time.strftime('[b]%H[/b]:%M:%S') # 更新秒表 m,s = divmod(self.sw_seconds,60) # 返回一個(gè)包含商和余數(shù)的元組 self.root.ids[’stopwatch_screen’].ids[’stopwatch’].text = ('%02d: %02d.[size=40]%02d[/size]' % (int(m),int(s),int(s*100%100))) # 重寫程序啟動(dòng)的事件 def on_start(self): Clock.schedule_interval(self.update,0) # 開(kāi)始/停止 def start_stop(self): self.root.ids[’stopwatch_screen’].ids[’start_stop’].text = ’啟動(dòng)’ 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 = ’啟動(dòng)’ 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'

這樣,這個(gè)程序就完成了。我們實(shí)例化MainApp()并調(diào)用其run()方法即可運(yùn)行。

if __name__ == ’__main__’: app = MainApp() app.run()小結(jié)

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

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

以上就是python基于Kivy 寫一個(gè)圖形桌面時(shí)鐘程序的詳細(xì)內(nèi)容,更多關(guān)于python Kivy 寫一個(gè)桌面時(shí)鐘程序的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品一区二区三区中文字幕 | 精品国产乱码久久久久久88av | 国产在线麻豆精品入口 | 欧美久久视频 | 国产偷录叫床高潮录音 | 久久久日韩精品一区二区三区 | 日韩在线一区二区 | 国产日韩欧美一区二区 | 美女福利网站 | 国产精品久久久久久久白浊 | 九九九视频精品 | 香蕉二区| 日韩精品久久久久久 | 国产精品精品视频一区二区三区 | 成人免费在线观看视频 | 老牛影视av一区二区在线观看 | 午夜精品一区二区三区免费视频 | 在线婷婷| 91视频精选 | 精品久久久久久亚洲国产800 | 中文字幕日韩欧美一区二区三区 | 日韩欧美中文字幕在线观看 | 欧美在线观看黄色 | 91精品久久久久久久久久 | 99久久成人 | 日韩精品一二三区 | 亚洲欧美日韩电影 | 美女天堂在线 | 黄a免费网络 | 亚洲高清在线 | 不卡在线视频 | 国产日韩精品一区 | 欧美一级欧美三级在线观看 | 久久伦理中文字幕 | 亚洲一区二区久久 | 国产精品资源在线 | 日本天天操 | 久久男女视频 | 国产精品久久久久久久久动漫 | 亚洲精品视频一区二区三区 | 国产一区二区中文字幕 |