QTを利用して1つのきわめて簡単な図形化Python目覚まし時計のプログラムを書きます
2759 ワード
今日はPythonで書かれたGUIアプリについてお話しします.小さな目覚まし時計(スクリーンのヒントだけで、音はしませんよ)
まず、この目覚まし時計がどのように奇抜なのかを紹介しましょう.
コマンドラインで起動する必要があります.
タイトルバーはありません.
メニューがありません.
ボタンを閉じることさえできなかった.
実行インタフェースがありません.
ここを見て、皆さんが聞くに違いない.こんな弱いプログラムを作る必要はないだろう.明らかに、教育の意義は実際の用途より大きい.
他のモジュールのようにQTインタフェースパッケージはロードする必要があります.
コマンドライン入力を使用したのでsysモジュールも必要です.
時間がかかりましたが、timeモジュールを使用する必要はありません.QTが提供するQTimeモジュールを使用します.
まずimport文の部分を書きましょう.
これはqtプログラムの命脈を制御するクラスで、後でゆっくり説明します.Qtプログラムごとに、似たような文が見つかります.
あとは目覚まし時計の時間を入力します.手順を踏む.
例外処理が含まれています.アプリケーションでは、すべての例外を考慮する必要があります.
プログラムではraiseを使用して例外をトリガーします.プログラムを私たちの予想軌道に乗せる.
明らかに、上のプログラムは十分ではありません.GUIの部分を判断する時間はありません.
時間が来たかどうかをどのように判断するかは、特に正確ではない方法、タイミング判断を与えます.
時間になると、次のステップにジャンプしてフォームを作成し、60 s遅延して閉じます.
QTimeモジュールについての紹介を書く必要があるようです.
今、すべての文を一緒に置いてください.テストしてみましょう.
完全なコードを添付:
まず、この目覚まし時計がどのように奇抜なのかを紹介しましょう.
コマンドラインで起動する必要があります.
タイトルバーはありません.
メニューがありません.
ボタンを閉じることさえできなかった.
実行インタフェースがありません.
ここを見て、皆さんが聞くに違いない.こんな弱いプログラムを作る必要はないだろう.明らかに、教育の意義は実際の用途より大きい.
他のモジュールのようにQTインタフェースパッケージはロードする必要があります.
コマンドライン入力を使用したのでsysモジュールも必要です.
時間がかかりましたが、timeモジュールを使用する必要はありません.QTが提供するQTimeモジュールを使用します.
まずimport文の部分を書きましょう.
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
app = QApplication(sys.argv)
これはqtプログラムの命脈を制御するクラスで、後でゆっくり説明します.Qtプログラムごとに、似たような文が見つかります.
あとは目覚まし時計の時間を入力します.手順を踏む.
try:
message = "Alert!"
if len(sys.argv) < 2:
raise ValueError
hours, mins = sys.argv[1].split(":")
due = QTime(int(hours), int(mins))
if not due.isValid():
raise ValueError
if len(sys.argv) > 2:
message = " ".join(sys.argv[2:])
except ValueError:
message = "Usage: alert.pyw HH:MM [optional message]"
例外処理が含まれています.アプリケーションでは、すべての例外を考慮する必要があります.
プログラムではraiseを使用して例外をトリガーします.プログラムを私たちの予想軌道に乗せる.
明らかに、上のプログラムは十分ではありません.GUIの部分を判断する時間はありません.
時間が来たかどうかをどのように判断するかは、特に正確ではない方法、タイミング判断を与えます.
import time
while QTime.currentTime() < due:
# 20
time.sleep(20)
時間になると、次のステップにジャンプしてフォームを作成し、60 s遅延して閉じます.
label = QLabel("" + message + "")
label.setWindowFlags(Qt.SplashScreen)
label.show()
QTimer.singleShot(60000, app.quit) # 1 minute
app.exec_()
QTimeモジュールについての紹介を書く必要があるようです.
今、すべての文を一緒に置いてください.テストしてみましょう.
完全なコードを添付:
import sys
import time
from PyQt4.QtCore import *
from PyQt4.QtGui import *
app = QApplication(sys.argv)
try:
message = "Alert!"
if len(sys.argv) < 2:
raise ValueError
hours, mins = sys.argv[1].split(":")
due = QTime(int(hours), int(mins))
if not due.isValid():
raise ValueError
if len(sys.argv) > 2:
message = " ".join(sys.argv[2:])
except ValueError:
message = "Usage: alert.pyw HH:MM [optional message]" # 24hr clock
while QTime.currentTime() < due:
time.sleep(20) # 20 seconds
label = QLabel("" + message + "")
label.setWindowFlags(Qt.SplashScreen)
label.show()
QTimer.singleShot(60000, app.quit) # 1 minute
app.exec_()