ラズパイデスクトップでPyQt5入門(15)Widgets(4)
こんばんは。國松です。
今回はカレンダーを作成していきたいと思います。
参考サイト
ZetCode PyQt5 tutorial
【PythonでGUI】PyQt5 -始めの一歩-
5.QCalenderWidget
QCalenderWidgetは月単位のカレンダーWidgetsを提供します。
今回は選択した日付がラベルに表示されるものを作成していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #!/usr/bin/python3 #-*- coding: utf-8 """ This example shows a QCalendarWidget widget. """ from PyQt5.QtWidgets import (QWidget,QCalendarWidget,QLabel, QApplication,QVBoxLayout) from PyQt5.QtCore import QDate import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout(self) #カレンダーウィジェットの作成 cal = QCalendarWidget(self) cal.setGridVisible(True) #日付がクリックされたらshowDate関数を呼び出す cal.clicked[QDate].connect(self.showDate) vbox.addWidget(cal) self.lbl = QLabel(self) #今日の日付を代入 date = cal.selectedDate() #今日の日付をラベルテキストに代入 self.lbl.setText(date.toString()) vbox.addWidget(self.lbl) self.setLayout(vbox) self.setGeometry(300,300,350,300) self.setWindowTitle('Calendar') self.show() def showDate(self,date): #クリックされた日付をラベルテキストに代入 self.lbl.setText(date.toString()) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) |
ラベルに曜日と日付が表示されていますがなんか見にくいですね。
表示される日付が綺麗に見えるようにしたいと思います。
32と44行目のdate.toStaring()にyyyyMMdd形式でフォーマットを指定します。
date.toString(“dddd yyyy-MM-dd”)
その他は特に変更はありません。一応全体のソースコードも載せておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #!/usr/bin/python3 #-*- coding: utf-8 """ This example shows a QCalendarWidget widget. """ from PyQt5.QtWidgets import (QWidget,QCalendarWidget,QLabel, QApplication,QVBoxLayout) from PyQt5.QtCore import QDate import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout(self) #カレンダーウィジェットの作成 cal = QCalendarWidget(self) cal.setGridVisible(True) #日付がクリックされたらshowDate関数を呼び出す cal.clicked[QDate].connect(self.showDate) vbox.addWidget(cal) self.lbl = QLabel(self) #今日の日付を代入 date = cal.selectedDate() #今日の日付をラベルテキストに代入 self.lbl.setText(date.toString("dddd yyyy-MM-dd")) vbox.addWidget(self.lbl) self.setLayout(vbox) self.setGeometry(300,300,350,300) self.setWindowTitle('Calendar') self.show() def showDate(self,date): #クリックされた日付をラベルテキストに代入 self.lbl.setText(date.toString("dddd yyyy-MM-dd")) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) |
日付が綺麗に表示されましまた。今回はここまでにしたいと思います。