質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

1785閲覧

wxpython 現在の時間をリエルタイムで表示

rev_timo

総合スコア117

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

1クリップ

投稿2017/10/12 02:40

wxpython でシンプルな時計アプリを作っています。
###やりたいことは
現在の日付と時間を表示して、時計のように動いて欲しいことです。

###分からないところ
表示された時間はリエルタイムではなく、アプリを実行した瞬間の時間になっています、どうすれば、時間が動きますか?

とりあえず、今のところまでは日付だけを表示のコードですが

# -*- coding: utf-8 -*- import wx import time class MyApp(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, title=title) main_panel = wx.Panel(self) date_time = wx.DateTime.Now() self.label_1 = wx.StaticText(main_panel, label="Current Time", pos=(20, 30)) self.label_2 = wx.StaticText(main_panel, label=time.strftime('%d %m %Y'), pos=(20,50)) self.Show() app = wx.App(False) frame = MyApp(None, "MyApp") app.MainLoop()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

wx.Timer を使用して、定期間隔毎に時刻を更新すると良いかと思います。

質問で挙げているコードに wx.Timer を対応してみましたので参考にしてください

Python

1import wx 2import time 3 4class MyApp(wx.Frame): 5 def __init__(self, parent, title): 6 wx.Frame.__init__(self, parent, title=title) 7 main_panel = wx.Panel(self) 8 date_time = wx.DateTime.Now() 9 self.label_1 = wx.StaticText(main_panel, label="Current Time", pos=(20, 30)) 10 self.label_2 = wx.StaticText(main_panel, label=time.strftime('%d/%m/%Y %H:%M'), pos=(20,50)) 11 12 # wx.Timerを追加し、update() を1秒間隔で呼び出す 13 self.timer = wx.Timer(self) 14 self.Bind(wx.EVT_TIMER, self.update) 15 self.timer.Start(1000) # とりあえず1秒(1000ms) 間隔 16 17 self.Show() 18 19 # 1秒間隔で呼ばれる関数 20 def update(self, event): 21 # 時刻が更新していたときだけ描画する(チラつき防止) 22 current_label = self.label_2.GetLabel() 23 new_label = time.strftime('%d/%m/%Y %H:%M') 24 if current_label != new_label: 25 self.label_2.SetLabel(new_label) 26 27app = wx.App(False) 28frame = MyApp(None, "MyApp") 29app.MainLoop()

投稿2017/10/12 03:12

編集2017/10/12 03:13
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rev_timo

2017/10/12 06:30

magichanさん、完璧です。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問