真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在python中利用Kivy編寫一個(gè)圖形桌面時(shí)鐘程序-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)怎么在python中利用Kivy編寫一個(gè)圖形桌面時(shí)鐘程序,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,專業(yè)領(lǐng)域包括網(wǎng)站建設(shè)、成都做網(wǎng)站、電商網(wǎng)站制作開發(fā)、小程序開發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!

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


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

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

  • 時(shí)鐘屏幕:clockscreen.kv

  • 秒表屏幕:stopwatchscreen.kv

  • 主界面:main.kv


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

怎么在python中利用Kivy編寫一個(gè)圖形桌面時(shí)鐘程序

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

怎么在python中利用Kivy編寫一個(gè)圖形桌面時(shí)鐘程序

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

怎么在python中利用Kivy編寫一個(gè)圖形桌面時(shí)鐘程序

編寫主程序代碼

在通過 Kivy 的kv設(shè)計(jì)語言構(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

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

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)

 # 開始/停止
 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()

看完上述內(nèi)容,你們對(duì)怎么在python中利用Kivy編寫一個(gè)圖形桌面時(shí)鐘程序有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


當(dāng)前文章:怎么在python中利用Kivy編寫一個(gè)圖形桌面時(shí)鐘程序-創(chuàng)新互聯(lián)
文章URL:http://weahome.cn/article/igoej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部