美文网首页
用wxpython製作鬧鐘程序

用wxpython製作鬧鐘程序

作者: Maliao | 来源:发表于2018-04-09 05:59 被阅读54次

功能需求

鬧鐘

  • 貪睡功能

倒計時

  • 自動重複
  • 彈窗提醒

碼表

通用功能

  • 自訂鬧鈴聲音

開發環境

python 2.7
wxpython

思路心得

主程序 Frame

程序內的Label、button等都是透過座標做定位,如果程序視窗最大化將會破壞佈局,所以在Frame style選擇中不顯示"視窗最大化"按鈕。

wx.Frame.__init__(self...,style=wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX | wx.TAB_TRAVERSAL)

佈局

功能上由於是透過下拉選單來選擇,所以佈局上都是透過Show or Hide來顯示對應功能的對象。

self.Label_Stopwatch = wx.StaticText(self, wx.ID_ANY, u"00:00:00", (35, 90), wx.Size(200, 40), wx.TE_CENTRE)
self.Label_SWcontent = wx.StaticText(self, wx.ID_ANY, u"", (110, 200), wx.Size(60, 85), wx.ST_NO_AUTORESIZE)

self.GroupSW = [
    self.Label_Stopwatch,
    self.Label_SWcontent
]

[i.Hide() for i in self.GroupSW]

定時器

主要功能核心"定時器 Timer",創建定時器時需要為定時器綁定一個event函數,再來可以根據情況設定運行時間(例如:一秒),默認會是循環運行(每隔一秒),也可設定參數只執行一次,在循環運行過程中也可以被按鈕事件觸發停止運行。

  • 系統時間定時器

在創建程序時先執行每1秒獲取電腦時間的定時器,鬧鐘及倒計時功能都是與系統時間比對後實現的。


def _OnRefresh(self, event):
    NowTime = time.strftime("%Y/%m/%d %H:%M:%S")
    self.Label_Nowtime.SetLabel(NowTime)


self.timer1 = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self._OnRefresh, self.timer1)
self.timer1.Start(1000)



倒計時功能

相比鬧鐘功能,倒計時在設計上不能以減一秒的方式進行判斷,由於在每次判斷都有毫秒差,時間一長就有分秒差,原先設定倒計時5分鐘的循環到後面提醒的時間將會越來越快。

因此判斷上必須將"倒數時間+當前時間"設一個end變數,每隔一秒的判斷其實就是end減當前時間,如果有自動重複功能 也是end變數加上設定的倒數時間,這樣才不會有誤差。

# 設定時間加上當前時間
self.CDendtime = datetime.datetime.now() + datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s))

# end變數減當前時間
diff = self.CDendtime - datetime.datetime.now()

if diff.total_seconds() <= 0:
    print("時間到~響鈴")

Dialog

Dialog對話彈窗,設定檔案路徑及提醒訊息,透過event呼叫的wx.Dialog,再將設定的值傳回類。

def OnBeepSetting(self, event):
    dlg = wx.FileDialog(self, u" 聲音檔案路徑 ", wildcard="Wav files (*.wav)|*.wav")
    if dlg.ShowModal() == wx.ID_OK:
        self.Sound = wx.Sound(dlg.Path)

    dlg.Destroy()

self.menuSetting = wx.MenuItem(self.Menu, 1, u" 鬧鈴聲音 ", help="")
self.Bind(wx.EVT_MENU, self.OnBeepSetting, id=1)

源碼地址

相关文章

  • 用wxpython製作鬧鐘程序

    功能需求 鬧鐘 貪睡功能 倒計時 自動重複 彈窗提醒 碼表 通用功能 自訂鬧鈴聲音 開發環境 思路心得 主程序 F...

  • 2021.1.4,晴.556篇

    元旦小假期結束了,今天,該上學的上學,上班的上班,早晨,鬧鐘響起,關掉鬧鐘,再睡五分鐘吧,反正時間也夠用,一迷糊,...

  • 用wxpython製作簡易Zabbix微監控

    概念說明 Zabbix前端報警及郵件發信等已可立即告警,但如果能整合到內部系統豈不甚好? 既然如此,後面將會以下圖...

  • 休閒篇

    每天語重心長地提醒自己調好鬧鐘 其實只是為了起床關鬧鐘 提醒自己 再睡一會兒就好了

  • 睡眠不佳

    今天是要上早班,需要七早。但很奇怪,明明訂了鬧鐘,卻總要在半途醒來,結果折騰好一陣又睡過去,再被鬧鐘鬧醒就特...

  • 行旅8:設定鬧鐘作練習

    操練練習手冊時,設定鬧鐘來確保自己不遺漏耶穌交代的每一次練習,反倒會耽誤了整個操練的目的。 事實上,練課的重點不在...

  • 20180610 讚美日記

    -今天中午的鬧鐘沒響,我睡了差不多八個小時就自己醒了,我的身體自己有個鬧鐘呢,真厲害! -今天我去買了菜和食物等等...

  • 五月開始戴隱形眼鏡

    五一假期第一個工作日。早上鬧鐘沒嚮,雖然特意把鬧鐘打開,但是忘記修改設置了,誤以為是每天都會響,其實是非節假日。 ...

  • Python程序猿在工作中用的哪些库?你现在有没有接触到?

    wxPython 如果你之前是 windows 程序员,用 MFC 或者 WIN32API 开发界面程序,那进入 ...

  • 一次告別

    早晨醒來的時候,我並不清醒,房間裏面很冷。我是被鬧鐘吵醒的,我定了大概二十個鬧鐘,從凌晨四點半到八點,我是被七點的...

网友评论

      本文标题:用wxpython製作鬧鐘程序

      本文链接:https://www.haomeiwen.com/subject/flfqfftx.html