PyQt5 – 日期的天數計算器
在這篇文章中,我們將看到如何在PyQt5中創建一個從日期算起的天數計算器sql 一個日期加上天數,從日期算起的天數計算器是用來從選定的日期中添加或減去天數,從而得到新的日期。這個計算器是用來得到給定天數后的確切日期的。下面是這個計算器的樣子
PyQt5 是跨平臺的GUI工具包,是Qt v5的一組綁定。 由于這個庫提供的工具和簡單性sql 一個日期加上天數,人們可以非常容易地開發一個交互式的桌面應用程序。以下是安裝PyQt5的命令
pip install PyQt5
GUI實現步驟:
1.創建一個標題標簽,顯示計算器名稱
2.創建標簽以顯示用戶選擇日期
3.創建一個對象讓用戶選擇日期
4.創建一個標簽和旋轉框,告訴用戶輸入天數并獲得天數
5.創建兩個按鈕用于添加和減去天數
6.創建一個標簽以顯示計算出的日期
后臺實現:
1.為這兩個按鈕添加動作
2.在加法按鈕的動作中,獲取天數并調用計算方法,并將天數作為參數傳給
3.在減去按鈕的動作中,獲得天數,使天數為負數,調用計算方法,并將天數作為參數傳給
4.在計算方法中獲得日歷中的選定日期
5.將通過的天數加入到選定的日期中
6.在結果標簽的幫助下,顯示新的日期。
以下是實現方法
# importing libraries
from PyQt5.QtWidgets import *?
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import *?
from PyQt5.QtCore import *?
import datetime
import sys
??
??
class Window(QMainWindow):
??
????def __init__(self):
????????super().__init__()
??
????????# setting title
????????self.setWindowTitle("Python ")
??
????????# width of window
????????self.w_width = 400
??
????????# height of window
????????self.w_height = 530
??
????????# setting geometry
????????self.setGeometry(100, 100, self.w_width, self.w_height)
??
????????# calling method
????????self.UiComponents()
??
????????# showing all the widgets
????????self.show()
??
????# method for components
????def UiComponents(self):
????????# creating head label
????????head = QLabel("+/- Days from a date Calculator", self)
??
????????head.setWordWrap(True)
??
????????# setting geometry to the head
????????head.setGeometry(0, 10, 400, 60)
??
????????# font
????????font = QFont('Times', 15)
????????font.setBold(True)
????????font.setItalic(True)
????????font.setUnderline(True)
??
????????# setting font to the head
????????head.setFont(font)
??
????????# setting alignment of the head
????????head.setAlignment(Qt.AlignCenter)
??
????????# setting color effect to the head
????????color = QGraphicsColorizeEffect(self)
????????color.setColor(Qt.darkCyan)
????????head.setGraphicsEffect(color)
??
????????# creating a label
????????b_label = QLabel("Select Date", self)
??
????????# setting properties? label
????????b_label.setAlignment(Qt.AlignCenter)
????????b_label.setGeometry(50, 100, 300, 20)
????????b_label.setStyleSheet("QLabel"
??????????????????????????????"{"
??????????????????????????????"border : 1px solid black;"
??????????????????????????????"background : rgba(70, 70, 70, 25);"
??????????????????????????????"}")
????????b_label.setFont(QFont('Times', 9))
??
????????# creating a calendar widget to select the date
????????self.calendar = QCalendarWidget(self)
??
????????# setting geometry of the calendar
????????self.calendar.setGeometry(50, 120, 300, 180)
??
????????# setting font to the calendar
????????self.calendar.setFont(QFont('Times', 6))
??
??
????????# creating a label
????????days_label = QLabel("Days", self)
??
????????# setting geometry to the label
????????days_label.setGeometry(50, 320, 147, 40)
??
????????# setting alignment
????????days_label.setAlignment(Qt.AlignCenter)
??
????????# setting stylesheet
????????days_label.setStyleSheet("QLabel"
?????????????????????????????????"{"
?????????????????????????????????"border : 2px solid black;"
?????????????????????????????????"background : rgba(70, 70, 70, 35);"
?????????????????????????????????"}")
??
????????days_label.setFont(QFont('Times', 9))
??
????????# creating a spin box to get the days
????????self.days = QSpinBox(self)
??
????????# setting geometry to the spin box
????????self.days.setGeometry(203, 320, 147, 40)
??
????????# setting maximum value of spin box
????????self.days.setMaximum(99999999)
??
????????# setting font and alignment
????????self.days.setFont(QFont('Times', 9))
????????self.days.setAlignment(Qt.AlignCenter)
??
??
??
????????# creating a push button
????????add = QPushButton("Add Days", self)
??
????????# setting geometry to the push button
????????add.setGeometry(80, 380, 100, 40)
??
????????# adding action to the button
????????add.clicked.connect(self.add_action)
??
????????# adding color effect to the push button
????????color = QGraphicsColorizeEffect()
????????color.setColor(Qt.blue)
????????add.setGraphicsEffect(color)
??
????????# creating a push button
????????subtract = QPushButton("Subtract Days", self)
??
????????# setting geometry to the push button
????????subtract.setGeometry(220, 380, 100, 40)
??
????????# adding action to the? button
????????subtract.clicked.connect(self.subtract_action)
??
????????# adding color effect to the push button
????????color = QGraphicsColorizeEffect()
????????color.setColor(Qt.red)
????????subtract.setGraphicsEffect(color)
??
??
????????# creating a label to show result
????????self.result = QLabel(self)
??
????????# setting properties to result label
????????self.result.setAlignment(Qt.AlignCenter)
??
????????# setting geometry
????????self.result.setGeometry(50, 440, 300, 60)
??
????????# making it multi line
????????self.result.setWordWrap(True)
??
????????# setting stylesheet
????????# adding border and background
????????self.result.setStyleSheet("QLabel"
??????????????????????????????????"{"
??????????????????????????????????"border : 3px solid black;"
??????????????????????????????????"background : white;"
??????????????????????????????????"}")
??
????????# setting font
????????self.result.setFont(QFont('Arial', 11))
??
????# method called by the add push button
????def add_action(self):
??
????????# get the days from the spin box
????????days = self.days.value()
??
????????# call the calculate action
????????self.calculate(days)
??
??
????# method called by the subtract push button
????def subtract_action(self):
??
????????# get the days from the spin box
????????# make the days value negative
????????days = 0 - self.days.value()
??
????????# call the calculate action
????????self.calculate(days)
??
??
??
????def calculate(self, days):
??
????????# get the selected date of calendar
????????selected_date = self.calendar.selectedDate()
??
????????# adding days to the selected days
????????new_date = selected_date.addDays(days)
??
????????# showing this date through label
????????self.result.setText("Date : " + new_date.toString(Qt.ISODate))
??
# create pyqt5 app
App = QApplication(sys.argv)
??
# create the instance of our Window
window = Window()
??
# start the app
sys.exit(App.exec())