class Demo(QWidget): def __init__(self): super(Demo, self).__init__() self.calendar = QCalendarWidget(self) self.calendar.setMinimumDate(QDate(1946, 2, 14)) # 2 self.calendar.setMaximumDate(QDate(6666, 6, 6)) # 3 # self.calendar.setDateRange(QDate(1946, 2, 14), QDate(6666, 6, 6)) self.calendar.setFirstDayOfWeek(Qt.Monday) # 4 # self.calendar.setSelectedDate(QDate(1946, 2, 14)) # 5 self.calendar.setGridVisible(True) # 6 self.calendar.clicked.connect(self.show_emotion_func) # 6 print(self.calendar.minimumDate()) # 7 print(self.calendar.maximumDate()) print(self.calendar.selectedDate()) # print(self.calendar.selectedDate().toString()) self.label = QLabel(self) # 8 self.label.setAlignment(Qt.AlignCenter) weekday = self.calendar.selectedDate().toString('ddd') # 9 print("weekday:{0} {1}".format(weekday, EMOTION.get(weekday, "Jiang"))) self.label.setText(EMOTION.get(weekday, 'jiang ')) self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.calendar) self.v_layout.addWidget(self.label) self.setLayout(self.v_layout) self.setWindowTitle('QCalendarWidget') def show_emotion_func(self): # 10 weekday = self.calendar.selectedDate().toString('ddd') self.label.setText(EMOTION[weekday])
def get_calendar_widget(self): calendar = QCalendarWidget() calendar.setEnabled(True) calendar.setFirstDayOfWeek(Qt.Monday) calendar.setDateEditEnabled(True) return calendar
def __init__(self, *__args): super().__init__(*__args) self.setCalendarPopup(True) calendar = QCalendarWidget() calendar.setGridVisible(True) calendar.setFirstDayOfWeek(Qt.Monday) self.setCalendarWidget(calendar) self.setDisplayFormat('d MMM yyyy - hh:mm:ss')
class Demo(QWidget): def __init__(self): super(Demo, self).__init__() self.calendar = QCalendarWidget(self) # 通过setMinimumDate()和 # setMaximumDate()可以设置日历的最小和最大日期 # (可用setDateRange()替代),传入的参数为QDate。 self.calendar.setMinimumDate(QDate(1946, 2, 14)) # 2 self.calendar.setMaximumDate(QDate(6666, 6, 6)) # 3 # self.calendar.setDateRange(QDate(1946, 2, 14), QDate(6666, 6, 6)) # self.calendar.setFirstDayOfWeek(Qt.Monday) # 4 # self.calendar.setSelectedDate(QDate(1946, 2, 14)) # 5 # setGridVisible(bool)方法可以设置是否在日历上显示网格; self.calendar.setGridVisible(True) # 6 # 当点击到日历上的某个日期时,clicked信号就会被触发 self.calendar.clicked.connect(self.show_emotion_func) # 6 self.calendar.setFirstDayOfWeek(Qt.Sunday) print(self.calendar.minimumDate()) # 7 print(self.calendar.maximumDate()) print(self.calendar.selectedDate()) self.label = QLabel(self) # 8 self.label.setAlignment(Qt.AlignCenter) # setSelectedDate()方法可以设置日历初始化时所显示的日期 # ,如果不设置,则默认是当天日期; weekday = self.calendar.selectedDate().toString('ddd') # 9 self.label.setText(EMOTION[weekday]) self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.calendar) self.v_layout.addWidget(self.label) self.setLayout(self.v_layout) self.setWindowTitle('QCalendarWidget') def show_emotion_func(self): # 10 weekday = self.calendar.selectedDate().toString('ddd') self.label.setText(EMOTION[weekday])
def initUI(self): cal = QCalendarWidget(self) cal.setGridVisible(True) cal.move(20, 20) cal.setFirstDayOfWeek(QtCore.Qt.Monday) cal.clicked[QtCore.QDate].connect(self.showDate) self.lbl = QLabel(self) self.label = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) #вывод текущей даты self.lbl.move(450, 100) self.label.setText('Заходи у місті Вінниця') self.setFont(QFont('Comic Sans MS', 10)) # вывод окна self.setGeometry(300, 300, 580, 400) self.setWindowTitle('Calendar') self.show()
class Ui_PostX_Calendar(object): def setupUi(self, PostX_Calendar): PostX_Calendar.setObjectName(_fromUtf8("PostX_Calendar")) PostX_Calendar.resize(500, 300) palette = QPalette() brush = QBrush(QColor(245, 245, 225)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.WindowText, brush) brush = QBrush(QColor(59, 58, 55)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Button, brush) brush = QBrush(QColor(88, 87, 82)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Light, brush) brush = QBrush(QColor(73, 72, 68)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Midlight, brush) brush = QBrush(QColor(29, 29, 27)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Dark, brush) brush = QBrush(QColor(39, 38, 36)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Mid, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Text, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.BrightText, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.ButtonText, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Base, brush) brush = QBrush(QColor(59, 58, 55)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Window, brush) brush = QBrush(QColor(0, 0, 74)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Shadow, brush) brush = QBrush(QColor(29, 29, 27)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.AlternateBase, brush) brush = QBrush(QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.ToolTipBase, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.ToolTipText, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.WindowText, brush) brush = QBrush(QColor(59, 58, 55)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Button, brush) brush = QBrush(QColor(88, 87, 82)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Light, brush) brush = QBrush(QColor(73, 72, 68)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Midlight, brush) brush = QBrush(QColor(29, 29, 27)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Dark, brush) brush = QBrush(QColor(39, 38, 36)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Mid, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Text, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.BrightText, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.ButtonText, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Base, brush) brush = QBrush(QColor(59, 58, 55)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Window, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Shadow, brush) brush = QBrush(QColor(29, 29, 27)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.AlternateBase, brush) brush = QBrush(QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.ToolTipBase, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.ToolTipText, brush) brush = QBrush(QColor(29, 29, 27)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.WindowText, brush) brush = QBrush(QColor(59, 58, 55)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Button, brush) brush = QBrush(QColor(88, 87, 82)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Light, brush) brush = QBrush(QColor(73, 72, 68)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Midlight, brush) brush = QBrush(QColor(29, 29, 27)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Dark, brush) brush = QBrush(QColor(39, 38, 36)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Mid, brush) brush = QBrush(QColor(29, 29, 27)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Text, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.BrightText, brush) brush = QBrush(QColor(29, 29, 27)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.ButtonText, brush) brush = QBrush(QColor(59, 58, 55)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Base, brush) brush = QBrush(QColor(59, 58, 55)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Window, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Shadow, brush) brush = QBrush(QColor(59, 58, 55)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.AlternateBase, brush) brush = QBrush(QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.ToolTipBase, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.ToolTipText, brush) PostX_Calendar.setPalette(palette) PostX_Calendar.setWindowOpacity(1.0) self.horizontalLayout = QHBoxLayout(PostX_Calendar) self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) self.calendarWidget = QCalendarWidget(PostX_Calendar) palette = QPalette() brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.WindowText, brush) brush = QBrush(QColor(97, 97, 97)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Button, brush) brush = QBrush(QColor(146, 146, 146)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Light, brush) brush = QBrush(QColor(121, 121, 121)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Midlight, brush) brush = QBrush(QColor(48, 48, 48)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Dark, brush) brush = QBrush(QColor(64, 64, 64)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Mid, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Text, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.BrightText, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.ButtonText, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Base, brush) brush = QBrush(QColor(97, 97, 97)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Window, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.Shadow, brush) brush = QBrush(QColor(48, 48, 48)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.AlternateBase, brush) brush = QBrush(QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.ToolTipBase, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Active, QPalette.ToolTipText, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.WindowText, brush) brush = QBrush(QColor(97, 97, 97)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Button, brush) brush = QBrush(QColor(146, 146, 146)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Light, brush) brush = QBrush(QColor(121, 121, 121)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Midlight, brush) brush = QBrush(QColor(48, 48, 48)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Dark, brush) brush = QBrush(QColor(64, 64, 64)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Mid, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Text, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.BrightText, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.ButtonText, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Base, brush) brush = QBrush(QColor(97, 97, 97)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Window, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.Shadow, brush) brush = QBrush(QColor(48, 48, 48)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.AlternateBase, brush) brush = QBrush(QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.ToolTipBase, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Inactive, QPalette.ToolTipText, brush) brush = QBrush(QColor(48, 48, 48)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.WindowText, brush) brush = QBrush(QColor(97, 97, 97)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Button, brush) brush = QBrush(QColor(146, 146, 146)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Light, brush) brush = QBrush(QColor(121, 121, 121)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Midlight, brush) brush = QBrush(QColor(48, 48, 48)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Dark, brush) brush = QBrush(QColor(64, 64, 64)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Mid, brush) brush = QBrush(QColor(48, 48, 48)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Text, brush) brush = QBrush(QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.BrightText, brush) brush = QBrush(QColor(48, 48, 48)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.ButtonText, brush) brush = QBrush(QColor(97, 97, 97)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Base, brush) brush = QBrush(QColor(97, 97, 97)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Window, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.Shadow, brush) brush = QBrush(QColor(97, 97, 97)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.AlternateBase, brush) brush = QBrush(QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.ToolTipBase, brush) brush = QBrush(QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QPalette.Disabled, QPalette.ToolTipText, brush) self.calendarWidget.setPalette(palette) font = QFont() font.setFamily(_fromUtf8("Monospace")) font.setPointSize(12) font.setStyleStrategy(QFont.PreferAntialias) self.calendarWidget.setFont(font) self.calendarWidget.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) self.calendarWidget.setFirstDayOfWeek(QtCore.Qt.Monday) self.calendarWidget.setGridVisible(True) self.calendarWidget.setHorizontalHeaderFormat( QCalendarWidget.ShortDayNames) self.calendarWidget.setDateEditEnabled(True) self.calendarWidget.setObjectName(_fromUtf8("calendarWidget")) self.horizontalLayout.addWidget(self.calendarWidget) self.retranslateUi(PostX_Calendar) QtCore.QMetaObject.connectSlotsByName(PostX_Calendar) def retranslateUi(self, PostX_Calendar): PostX_Calendar.setWindowTitle( _translate("PostX_Calendar", "PostX-Calendar-QT5", None)) PostX_Calendar.setToolTip( _translate("PostX_Calendar", "PostX-Calendar", None)) self.calendarWidget.setToolTip( _translate("PostX_Calendar", "PostX-Calendar", None))
def __init__(self): super().__init__() self.title = "ESS VRL Unavailability Tool" self.top = 400 self.left = 400 self.width = 400 self.height = 400 self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) f = open("tdb.txt", "r") startdate = f.readline() starr = startdate.split(".") print(starr) #date = QDate.fromString() vbox = QVBoxLayout() calendar = QCalendarWidget() calendar.setGridVisible(True) calendar.setFirstDayOfWeek(QtCore.Qt.Thursday) #calendar.setSelectedDate() lbl = QLabel() lbl.setText("Select a Thursday date to start week with") vbox.addWidget(lbl) vbox.addWidget(calendar) #self.setLayout(grid) f = open("tdb.txt", "r") startdate = f.readline() enddate = f.readline() times = [] temp_times = [] for n in range(0, 7): temp_times = f.readline().split() times.append(temp_times) print(times) grid = QGridLayout() day = ["Thurs", "Fri", "Sat", "Sun", "Mon", "Tues", "Weds"] for i in range(1, 8): daycount = QLabel() daycount.setText(day[i - 1]) grid.addWidget(daycount, i, 0) for j in range(2, 6): box = QLineEdit() box.setText(times[i - 1][j - 2]) grid.addWidget(box, i, j) def handleButton(): date = calendar.selectedDate() strdate = QDate.toPyDate(date) enddate = strdate + timedelta(days=6) strdate = str(strdate) strdate = strdate.split("-") enddate = str(enddate) enddate = enddate.split("-") print(strdate) print(enddate) #FILE READING f = open("tdb.txt", "r") startdate = f.readline() enddate = f.readline() times = [] temp_times = [] for n in range(0, 7): temp_times = f.readline().split() times.append(temp_times) #print(temp_times) msg = f.readline() #FILE WRITING f = open("tdb.txt", "w") f.write(strdate[2] + "." + strdate[1] + "." + strdate[0] + "\n") f.write( str(enddate[2]) + "." + str(enddate[1]) + "." + str(enddate[0]) + "\n") bbox = QVBoxLayout() button = QPushButton() button.setText("Set Unavailability") button.clicked.connect(handleButton) bbox.addWidget(button) vall = QVBoxLayout() vall.addLayout(vbox) vall.addLayout(grid) vall.addLayout(bbox) self.setLayout(vall) self.show()
class IncomeEventClaster(QDialog): def __init__(self, header, IncomeSourceCategory, currency, parent = None): QDialog.__init__(self, parent) self._acceptState = False self._dataContainer = {} self._header = header self._IncomeSourceCategory = IncomeSourceCategory self._Currency = currency self.date = [1993,1,22] self.InitUI() self.addRowWidgets() self.show() #+++++++++++++++++++++++++++ InitUI +++++++++++++++++++++++++++++++++++ def InitUI(self): self.setWindowTitle("მონაცემთა შეტანა") self.setWindowIcon(QtGui.QIcon("icon/income.svg")) self.setFixedSize(750, 900) vbox = QVBoxLayout() hbox = QHBoxLayout() vbox.setContentsMargins(2, 2, 2, 2) ########################### Calendar ################################## self.calendar = QCalendarWidget() self.calendar.setGridVisible(True) self.calendar.setFirstDayOfWeek(Qt.Monday) ############################ Table #################################### self.table = QTableWidget() self.table.setRowCount(1) self.table.setColumnCount(len(self._header)) self.table.setHorizontalHeaderLabels(self._header) self.table.setSortingEnabled(False) self.table.setWordWrap(True) self.rowNumb = self.table.rowCount()-1 ########################### add Row ################################### self.addRowButton = QPushButton('დამატება') self.addRowButton.setMaximumWidth(100) self.addRowButton.setIcon(QIcon('icon/addRow.svg')) self.addRowButton.clicked.connect(self.addRow) ########################### del Row ################################### self.delRowButton = QPushButton('წაშლა') self.delRowButton.setMaximumWidth(100) self.delRowButton.setIcon(QIcon('icon/DelRow.svg')) self.delRowButton.clicked.connect(self.delRow) ############################# test #################################### self.testButton = QPushButton('ტესტი') self.testButton.setIcon(QIcon('icon/test.png')) self.testButton.clicked.connect(self.test) ############################ Accept ################################### self.acceptButton = QPushButton('დადასტურება', self) self.acceptButton.clicked.connect(self.acceptDialog) ############################ Reject ################################### self.rejectButton = QPushButton('გაუქმება', self) self.rejectButton.clicked.connect(self.rejectDialog) #################### Add widgets on layouts ########################### hbox.addWidget(self.addRowButton) hbox.addWidget(self.delRowButton) vbox.addWidget(self.calendar,5) vbox.addWidget(self.table,90) vbox.addLayout(hbox) vbox.addWidget(self.testButton,5) hboxAcceptReject = QHBoxLayout() hboxAcceptReject.addWidget(self.acceptButton) hboxAcceptReject.addWidget(self.rejectButton) vbox.addLayout(hboxAcceptReject) self.setLayout(vbox) #++++++++++++++++++++++++++ Add Row +++++++++++++++++++++++++++++++++++ def addRow(self): self.rowNumb = self.table.rowCount() self.table.insertRow(self.rowNumb) self.addRowWidgets() #++++++++++++++++++++++ Add Row Widgets +++++++++++++++++++++++++++++++ def addRowWidgets(self): ########################## emountEdit ################################# quantityEdit = QLineEdit('') quantityEdit.setValidator(QDoubleValidator()) ###################### Currency Selector ############################## CurrencySelector = QComboBox() for idx, key in enumerate(self._Currency): CurrencySelector.addItem(key) CurrencySelector.setItemData(idx, Qt.AlignCenter, Qt.TextAlignmentRole) CurrencySelector.setItemIcon(idx, QtGui.QIcon(self._Currency[key])) quantityEditHlayout = QHBoxLayout() quantityEditHlayout.addWidget(quantityEdit,50) quantityEditHlayout.addWidget(CurrencySelector,50) quantityEditWidgets = QWidget() quantityEditWidgets.setLayout(quantityEditHlayout) ################## Income Category Selector ########################### incomeCategorySelector = QComboBox() incomeCategorySelector.addItems(self._IncomeSourceCategory) self.table.setCellWidget(self.rowNumb, 0, incomeCategorySelector) self.table.setCellWidget(self.rowNumb, 1, quantityEditWidgets) self.table.cellWidget(self.rowNumb,0).activated.connect(self.incomeCategoryFormater) ################### Set Table Cell Widths ############################# self.table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents) self.table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) # +++++++++++++ String to float number formater +++++++++++++++++++++++ def _stingToFloatFormater(self, value): if ',' in value: value = value.replace(",", ".") return value else: return value #++++++++++++++++++++++++ Delete Row ++++++++++++++++++++++++++++++++++ def delRow(self): self.rowNumb = self.table.rowCount() if self.rowNumb > 1: selected_Row = self.table.currentRow() self.table.removeRow(selected_Row) self.table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) #+++++++++++++++++++++ Set calendar date ++++++++++++++++++++++++++++++ def setCalendarDate(self, date): self.calendar.setSelectedDate(QDate(date[0], date[1], date[2])) #+++++++++++++++++++++ Make data claster ++++++++++++++++++++++++++++++ def makeDataClaster(self): self._dataContainer = {} dataContainerArray = [] self.rowNumb = self.table.rowCount() self.colNumb = self.table.columnCount() for row in range(self.rowNumb): dataContainerTemp = [] for column in range(self.colNumb): if column == 0: dataContainerTemp.append({'cell_0' : self.table.cellWidget(row,column).currentIndex()}) elif column == 1: if len(self.table.cellWidget(row, 1).children()[0]) == 2: dataContainerTemp.append({'cell_1.1' : self.table.cellWidget(row,column).children()[1].text(), 'cell_1.2' : self.table.cellWidget(row,column).children()[2].currentIndex()}) elif len(self.table.cellWidget(row, 1).children()[0]) == 4: dataContainerTemp.append({'cell_1.1' : self._stingToFloatFormater(self.table.cellWidget(row,column).children()[1].text()), 'cell_1.2' : self.table.cellWidget(row,column).children()[2].currentIndex(), 'cell_1.3' : self._stingToFloatFormater(self.table.cellWidget(row,column).children()[3].text()), 'cell_1.4' : self.table.cellWidget(row,column).children()[4].currentIndex()}) dataContainerArray.append(dataContainerTemp) self._dataContainer.update({self.calendar.selectedDate().toString("dd.MM.yyyy") : dataContainerArray}) #+++++++++++++++++++++ Edit data claster ++++++++++++++++++++++++++++++ def EditDataClaster(self, DataClasterComponent, timeStamp): for _ in range(len(DataClasterComponent)-1): self.addRow() self.setCalendarDate(QDate.fromString(timeStamp, 'dd.MM.yyyy').getDate()) for row, rowData in enumerate(DataClasterComponent): self.table.cellWidget(row, 0).setCurrentIndex(rowData[0]['cell_0']) self.table.cellWidget(row, 1).children()[1].setText(rowData[1]['cell_1.1']) self.table.cellWidget(row, 1).children()[2].setCurrentIndex(rowData[1]['cell_1.2']) if len(rowData[1]) == 4: quantityEdit = QLineEdit('') quantityEdit.setValidator(QDoubleValidator()) CurrencySelector = QComboBox() for idx, key in enumerate(self._Currency): CurrencySelector.addItem(key) CurrencySelector.setItemData(idx, Qt.AlignCenter, Qt.TextAlignmentRole) CurrencySelector.setItemIcon(idx, QtGui.QIcon(self._Currency[key])) self.table.cellWidget(row, 1).children()[0].addWidget(quantityEdit,50) self.table.cellWidget(row, 1).children()[0].addWidget(CurrencySelector,50) self.table.cellWidget(row, 1).children()[3].setText(rowData[1]['cell_1.3']) self.table.cellWidget(row, 1).children()[4].setCurrentIndex(rowData[1]['cell_1.4']) self.table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) #++++++++++++++++++++++++++ Accept ++++++++++++++++++++++++++++++++++++ def acceptDialog(self): self.makeDataClaster() self._acceptState = True self.close() #++++++++++++++++++++++++++ Reject ++++++++++++++++++++++++++++++++++++ def rejectDialog(self): self._acceptState = False self.close() #++++++++++++++++++ Get data claster part +++++++++++++++++++++++++++++ def getDataClasterPart(self): return self._dataContainer, self._acceptState #++++++++++++++++++ incomeCategoryFormater ++++++++++++++++++++++++++++ def incomeCategoryFormater(self): changedSelectrorIndex = self.sender() self.rowNumb = self.table.rowCount() for row in range (self.rowNumb): if self.table.cellWidget(row,0) == changedSelectrorIndex: if self.table.cellWidget(row,0).currentIndex() == 7: if len(self.table.cellWidget(row, 1).children()[0]) == 2: quantityEdit = QLineEdit('') quantityEdit.setValidator(QDoubleValidator()) CurrencySelector = QComboBox() for idx, key in enumerate(self._Currency): CurrencySelector.addItem(key) CurrencySelector.setItemData(idx, Qt.AlignCenter, Qt.TextAlignmentRole) CurrencySelector.setItemIcon(idx, QtGui.QIcon(self._Currency[key])) self.table.cellWidget(row, 1).children()[0].addWidget(quantityEdit,50) self.table.cellWidget(row, 1).children()[0].addWidget(CurrencySelector,50) else: try: self.table.cellWidget(row, 1).children()[0].itemAt(2).widget().deleteLater() self.table.cellWidget(row, 1).children()[0].itemAt(3).widget().deleteLater() except AttributeError: pass self.table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) def read(self): return self._dataContainer #+++++++++++++++++++++++++++ Test +++++++++++++++++++++++++++++++++++++ def test(self): print("Test") self.makeDataClaster()
class OutcomeEventClaster(QDialog): def __init__(self, header, outComeEventNames, outComeCategory, units, currency, parent = None): QDialog.__init__(self, parent) self._acceptState = False self._dataContainer = {} self._header = header self._Currency = currency self._units = units self._category = outComeCategory self._EventNames = outComeEventNames self.InitUI() self.addRowWidgets() self.show() #++++++++++++++++++++++++++++++ InitUI ++++++++++++++++++++++++++++++++ def InitUI(self): self.setWindowTitle("მონაცემთა შეტანა") self.setWindowIcon(QtGui.QIcon("icon/outcome.svg")) self.setFixedSize(1300, 900) vbox = QVBoxLayout() hbox = QHBoxLayout() vbox.setContentsMargins(2, 2, 2, 2) ############################## Calendar ############################### self.calendar = QCalendarWidget() self.calendar.setGridVisible(True) self.calendar.setFirstDayOfWeek(Qt.Monday) ############################### Table ################################# self.table = QTableWidget() self.table.setRowCount(1) self.table.setColumnCount(len(self._header)) self.table.setHorizontalHeaderLabels(self._header) self.table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents) self.table.resizeRowsToContents() self.table.setSortingEnabled(False) self.table.setWordWrap(True) self.rowNumb = self.table.rowCount()-1 ############################## add Row ################################ self.addRowButton = QPushButton('დამატება') self.addRowButton.setMaximumWidth(100) self.addRowButton.setIcon(QIcon('icon/addRow.svg')) self.addRowButton.clicked.connect(self.addRow) ############################## del Row ################################ self.delRowButton = QPushButton('წაშლა') self.delRowButton.setMaximumWidth(100) self.delRowButton.setIcon(QIcon('icon/DelRow.svg')) self.delRowButton.clicked.connect(self.delRow) ############################### test ################################## sumHboxLayout = QHBoxLayout() self.sumMoney = QLineEdit() self.equivalentSumMoney = QLineEdit() sumHboxLayout.addWidget(self.sumMoney) sumHboxLayout.addWidget(self.equivalentSumMoney) self.testButton = QPushButton('ტესტი') self.testButton.setIcon(QIcon('icon/test.png')) self.testButton.clicked.connect(self.test) ############################## Accept ################################# self.acceptButton = QPushButton('დადასტურება', self) self.acceptButton.clicked.connect(self.acceptDialog) ############################## Reject ################################# self.rejectButton = QPushButton('გაუქმება', self) self.rejectButton.clicked.connect(self.rejectDialog) ###################### Add widgets on layouts ######################### hbox.addWidget(self.addRowButton) hbox.addWidget(self.delRowButton) vbox.addWidget(self.calendar,5) vbox.addWidget(self.table,90) vbox.addLayout(hbox) vbox.addLayout(sumHboxLayout) vbox.addWidget(self.testButton,5) hboxAcceptReject = QHBoxLayout() hboxAcceptReject.addWidget(self.acceptButton) hboxAcceptReject.addWidget(self.rejectButton) vbox.addLayout(hboxAcceptReject) self.setLayout(vbox) #++++++++++++++++++++++++++++ Add Row +++++++++++++++++++++++++++++++++ def addRow(self): self.rowNumb = self.table.rowCount() self.table.insertRow(self.rowNumb) self.addRowWidgets() #++++++++++++++++++++++++ Add Row Widgets +++++++++++++++++++++++++++++ def addRowWidgets(self): ########################### emountEdit ################################ quantityEdit = QLineEdit('1') quantityEdit.setValidator(QDoubleValidator()) quantityEdit.setMaximumWidth(30) units = QComboBox() units.setToolTip("<h5>ერთეული") units.setMaximumWidth(70) units.addItems(self._units) quantityEditHlayout = QHBoxLayout() quantityEditHlayout.addWidget(quantityEdit,20) quantityEditHlayout.addWidget(units,80) quantityEditWidgets = QWidget() quantityEditWidgets.setLayout(quantityEditHlayout) ####################### Category Selector ############################# outcomeCategorySelector = QComboBox() outcomeCategorySelector.addItems(self._category) ########################## Price Editor ############################### PriceEdit = QLineEdit() PriceEdit.setValidator(QDoubleValidator()) PriceEdit.setToolTip("<h5>გადახდა") PriceEdit.setMaximumWidth(70) #################### Equivalent Price Editor ########################## equivalentPriceEdit = QLineEdit() equivalentPriceEdit.setValidator(QDoubleValidator()) equivalentPriceEdit.setText("--") equivalentPriceEdit.setToolTip("<h5>კონვერტაცია ვალუტაში") equivalentPriceEdit.setMaximumWidth(70) ####################### Currency Selector ############################# CurrencySelector = QComboBox() for idx, key in enumerate(self._Currency): CurrencySelector.addItem(key) CurrencySelector.setItemData(idx, Qt.AlignCenter, Qt.TextAlignmentRole) CurrencySelector.setItemIcon(idx, QtGui.QIcon(self._Currency[key])) ################# Equivalent Currency Selector ######################## EqviCurrencySelector = QComboBox() for idx, key in enumerate(self._Currency): EqviCurrencySelector.addItem(key) EqviCurrencySelector.setItemData(idx, Qt.AlignCenter, Qt.TextAlignmentRole) EqviCurrencySelector.setItemIcon(idx, QtGui.QIcon(self._Currency[key])) ###################### App widgets in cells ########################### priceHlayout = QHBoxLayout() priceHlayout.addWidget(PriceEdit) priceHlayout.addWidget(CurrencySelector) priceHlayout.addWidget(equivalentPriceEdit) priceHlayout.addWidget(EqviCurrencySelector) priceWidgets = QWidget() priceWidgets.setLayout(priceHlayout) PayMethodWidgets = QWidget() PayMethod = QCheckBox() PayMethod.setToolTip("<h5>ნაღდით გადახდა") PayMethodHlayout = QHBoxLayout() PayMethodHlayout.addWidget(PayMethod) PayMethodHlayout.setAlignment( Qt.AlignCenter ) PayMethodWidgets.setLayout(PayMethodHlayout) eventContent = QTableWidgetItem('') self.table.setItem(self.rowNumb, 0, eventContent) eventContent.setData(Qt.UserRole, random.sample(self._EventNames, len(self._EventNames))) self.table.setItemDelegate(TableItemCompleter(self.table)) self.table.setCellWidget(self.rowNumb, 1, quantityEditWidgets) self.table.setCellWidget(self.rowNumb, 2, outcomeCategorySelector) self.table.setCellWidget(self.rowNumb, 3, priceWidgets) self.table.setCellWidget(self.rowNumb, 4, PayMethodWidgets) ###################### Set Table Cell Widths ########################## self.table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents) self.table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.ResizeToContents) self.table.horizontalHeader().setSectionResizeMode(2, QHeaderView.ResizeToContents) self.table.horizontalHeader().setSectionResizeMode(3, QHeaderView.ResizeToContents) self.table.horizontalHeader().setSectionResizeMode(4, QHeaderView.ResizeToContents) # +++++++++++++ String to float number formater +++++++++++++++++++++++ def _stingToFloatFormater(self, value): if ',' in value: value = value.replace(",", ".") return value else: return value #++++++++++++++++++++++++++ Delete Row ++++++++++++++++++++++++++++++++ def delRow(self): self.rowNumb = self.table.rowCount() if self.rowNumb > 1: selected_Row = self.table.currentRow() self.table.removeRow(selected_Row) #++++++++++++++++++++++ Set calendar date +++++++++++++++++++++++++++++ def setCalendarDate(self, date): self.calendar.setSelectedDate(QDate(date[0], date[1], date[2])) #++++++++++++++++++++++ Make data claster +++++++++++++++++++++++++++++ def makeDataClaster(self): self._dataContainer = {} dataContainerArray = [] self.rowNumb = self.table.rowCount() self.colNumb = self.table.columnCount() for row in range(self.rowNumb): dataContainerTemp = [] for column in range(self.colNumb): if column == 0: dataContainerTemp.append({'cell_0' : self.table.item(row,column).text()}) elif column == 1: dataContainerTemp.append({'cell_1.1' : self._stingToFloatFormater(self.table.cellWidget(row,column).children()[1].text()), 'cell_1.2' : self.table.cellWidget(row,column).children()[2].currentIndex()}) elif column == 2: dataContainerTemp.append({'cell_2.1' : self.table.cellWidget(row,column).currentIndex()}) elif column == 3: dataContainerTemp.append({'cell_3.1' : self._stingToFloatFormater(self.table.cellWidget(row,column).children()[1].text()), 'cell_3.2' : self.table.cellWidget(row,column).children()[2].currentIndex(), 'cell_3.3' : self._stingToFloatFormater(self.table.cellWidget(row,column).children()[3].text()), 'cell_3.4' : self.table.cellWidget(row,column).children()[4].currentIndex()}) elif column == 4: dataContainerTemp.append({'cell_4' : self.table.cellWidget(row,column).children()[1].isChecked()}) dataContainerArray.append(dataContainerTemp) self._dataContainer.update({self.calendar.selectedDate().toString("dd.MM.yyyy") : dataContainerArray}) #++++++++++++++++++++++ Edit data claster +++++++++++++++++++++++++++++ def EditDataClaster(self, DataClasterComponent, timeStamp): for _ in range(len(DataClasterComponent)-1): self.addRow() self.setCalendarDate(QDate.fromString(timeStamp, 'dd.MM.yyyy').getDate()) for row in range(len(DataClasterComponent)): self.table.item(row, 0).setText(DataClasterComponent[row][0]['cell_0']) self.table.cellWidget(row, 1).children()[1].setText(DataClasterComponent[row][1]['cell_1.1']) self.table.cellWidget(row, 1).children()[2].setCurrentIndex(DataClasterComponent[row][1]['cell_1.2']) self.table.cellWidget(row, 2).setCurrentIndex(DataClasterComponent[row][2]['cell_2.1']) self.table.cellWidget(row, 3).children()[1].setText(DataClasterComponent[row][3]['cell_3.1']) self.table.cellWidget(row, 3).children()[2].setCurrentIndex(DataClasterComponent[row][3]['cell_3.2']) self.table.cellWidget(row, 3).children()[3].setText(DataClasterComponent[row][3]['cell_3.3']) self.table.cellWidget(row, 3).children()[4].setCurrentIndex(DataClasterComponent[row][3]['cell_3.4']) self.table.cellWidget(row, 4).children()[1].setChecked(DataClasterComponent[row][4]['cell_4']) #+++++++++++++++++++++++++++ Accept +++++++++++++++++++++++++++++++++++ def acceptDialog(self): self.makeDataClaster() self._acceptState = True self.close() #+++++++++++++++++++++++++++ Reject +++++++++++++++++++++++++++++++++++ def rejectDialog(self): self._acceptState = False self.close() #++++++++++++++++++++ Get data claster part +++++++++++++++++++++++++++ def getDataClasterPart(self): return self._dataContainer, self._acceptState #++++++++++++++++++++++++++++ Test ++++++++++++++++++++++++++++++++++++ def test(self): print("Test") data = {'22.01.1993': [ [ {'cell_0': 'პური'}, {'cell_1.1': '2', 'cell_1.2': 1}, {'cell_2.1': 2}, { 'cell_3.1': '30', 'cell_3.2': 1, 'cell_3.3': '100', 'cell_3.4': 0}, {'cell_4': True}], [ {'cell_0': 'ლობიო'}, {'cell_1.1': '5', 'cell_1.2': 1}, {'cell_2.1': 3}, { 'cell_3.1': '64', 'cell_3.2': 2, 'cell_3.3': '54', 'cell_3.4': 3}, {'cell_4': True}]]} #self.EditDataClaster(data) self.makeDataClaster() self.rowNumb = self.table.rowCount() sumMoney = 0 equiSumMoney = 0 for row in range(self.rowNumb): try: sumMoney = sumMoney + round(float(self.table.cellWidget(row,3).children()[1].text()), 2) except ValueError: pass try: equiSumMoney = equiSumMoney + round(float(self.table.cellWidget(row,3).children()[3].text()), 2) except ValueError: pass self.sumMoney.setText(str(sumMoney)) self.equivalentSumMoney.setText(str(equiSumMoney))
class WorkoutPlanner(QWidget): def __init__(self): super().__init__() self.setStyleSheet(""" QWidget{ color:#c7c7c7; font-weight: bold; } QPushButton{ background-color: rgba(0, 0, 0, 0); border: 1px solid; font-size: 18px; font-weight: bold; border-color: #808080; min-height: 28px; white-space:nowrap; text-align: left; padding-left: 5%; font-family: Montserrat; } QPushButton:hover:!pressed{ border: 2px solid; border-color: #747474; } QPushButton:pressed{ border: 2px solid; background-color: #323232; border-color: #6C6C6C; }""") self.db_wrapper = DatabaseWrapper() self.table_name = "Workouts" self.db_wrapper.create_local_table(self.table_name) if self.db_wrapper.local_table_is_empty(self.table_name): self.db_wrapper.insert_default_values(self.table_name) self.fetched_workouts = json.loads( self.db_wrapper.fetch_local_column(self.table_name, "workouts")) self.current_date = datetime.today().strftime("%d/%m/%Y") if not self.current_date in self.fetched_workouts: self.fetched_workouts[self.current_date] = { "Personal Notes": "", "Workout Name": "None" } self.db_wrapper.update_table_column( self.table_name, "workouts", json.dumps(self.fetched_workouts)) self.create_panel() def create_panel(self): self.grid = QGridLayout() self.grid.addWidget(self.create_calendar(), 0, 0, 2, 1) self.grid.addWidget(self.create_stats(), 0, 1, 2, 1) self.grid.addWidget(self.create_left_details(), 2, 0, 2, 1) self.grid.addWidget(self.create_right_details(), 2, 1, 2, 1) self.setLayout(self.grid) def create_calendar(self): frame = QFrame() frame.setFrameStyle(QFrame.StyledPanel) layout = QHBoxLayout() self.calendar = QCalendarWidget(self) self.calendar.setLocale(QLocale(QLocale.English)) self.calendar.setFirstDayOfWeek(Qt.DayOfWeek.Monday) self.calendar.clicked.connect(lambda: self.show_date()) layout.addWidget(self.calendar) frame.setLayout(layout) return frame def create_stats(self): frame = QFrame() frame.setFrameStyle(QFrame.StyledPanel) stats_layout = QVBoxLayout() stats_label = QLabel("Stats") stats_label.setFont(QFont("Ariel", 18, weight=QFont.Bold)) number_of_workouts = QLabel(" ".join([ "Total Number Of Workouts Done:", str(len(self.fetched_workouts)) ])) counter_this_month = 0 for date in self.fetched_workouts: if date.split("/")[1] == self.current_date.split("/")[1]: counter_this_month += 1 workouts_done_this_month = QLabel(" ".join( ["Workouts Done This Month:", str(counter_this_month)])) last_workout = list(self.fetched_workouts.keys())[-1] for date, workout in reversed(list(self.fetched_workouts.items())): if len(workout) > 1: # found workout that is not todays default last_workout = date break last_workout = QLabel(" ".join(["Last Workout:", last_workout])) stats_layout.addWidget(stats_label) stats_layout.addWidget(number_of_workouts) stats_layout.addWidget(workouts_done_this_month) stats_layout.addWidget(last_workout) frame.setLayout(stats_layout) return frame def create_left_details(self): frame = QFrame() frame.setFrameStyle(QFrame.StyledPanel) layout = QVBoxLayout() self.day_label = QLabel(self.current_date) self.day_label.setFont(QFont("Ariel", 18, weight=QFont.Bold)) workout_done_layout = QHBoxLayout() self.workout_done_label = QLabel(" ".join([ "Workout Done:", self.fetched_workouts[self.current_date]["Workout Name"] ])) workout_done_button = QPushButton("Change") workout_done_button.clicked.connect(lambda: self.change_workout_done()) workout_done_layout.addWidget(self.workout_done_label) workout_done_layout.addWidget(workout_done_button) specific_workout_layout = QHBoxLayout() specific_workout_label = QLabel( "Create a workout specific for one day: ") specific_workout_button = QPushButton("1 Time Workout") specific_workout_button.clicked.connect( lambda: self.show_1_time_window()) specific_workout_layout.addWidget(specific_workout_label) specific_workout_layout.addWidget(specific_workout_button) personal_notes_layout = QVBoxLayout() personal_notes_label = QLabel("Personal Notes:") self.text_edit = QTextEdit() self.text_edit.setStyleSheet("color: black;") self.text_edit.setText( self.fetched_workouts[self.current_date]["Personal Notes"]) self.personal_notes_save_button = QPushButton("Save Changes") self.personal_notes_save_button.clicked.connect( lambda: self.update_personal_notes()) personal_notes_layout.addWidget(personal_notes_label) personal_notes_layout.addWidget(self.text_edit) personal_notes_layout.addWidget(self.personal_notes_save_button) layout.addWidget(self.day_label) layout.addLayout(workout_done_layout) layout.addLayout(specific_workout_layout) layout.addLayout(personal_notes_layout) frame.setLayout(layout) return frame def create_right_details(self): frame = QFrame() frame.setFrameStyle(QFrame.StyledPanel) layout = QVBoxLayout() layout.setAlignment(Qt.AlignTop) details_label = QLabel("Workout Details") details_label.setFont(QFont("Ariel", 18, weight=QFont.Bold)) self.grid_layout = QGridLayout() name_label = QLabel("Exercise Name") sets_label = QLabel("Sets") reps_label = QLabel("Reps") rest_label = QLabel("Rest") layout.addWidget(details_label) self.grid_layout.addWidget(name_label, 0, 0) self.grid_layout.addWidget(sets_label, 0, 1) self.grid_layout.addWidget(reps_label, 0, 2) self.grid_layout.addWidget(rest_label, 0, 3) if "Exercises" in self.fetched_workouts[self.current_date]: exercises_count = len( self.fetched_workouts[self.current_date]["Exercises"]) self.number_of_exercises_label = QLabel(" ".join( ["Number of Exercises:", str(exercises_count)])) set_count = 0 for exercise in self.fetched_workouts[ self.current_date]["Exercises"]: set_count += int(self.fetched_workouts[self.current_date] ["Exercises"][exercise]["Sets"]) self.total_set_count_label = QLabel(" ".join( ["Total Set Count:", str(set_count)])) layout.addWidget(self.number_of_exercises_label) layout.addWidget(self.total_set_count_label) names_labels = [None] * len( self.fetched_workouts[self.current_date]["Exercises"].keys()) sets_labels = [None] * len( self.fetched_workouts[self.current_date]["Exercises"].keys()) reps_labels = [None] * len( self.fetched_workouts[self.current_date]["Exercises"].keys()) rest_labels = [None] * len( self.fetched_workouts[self.current_date]["Exercises"].keys()) j = 1 for i, exercise in enumerate(self.fetched_workouts[ self.current_date]["Exercises"].keys()): names_labels[i] = QLabel(exercise) sets_labels[i] = QLabel( str(self.fetched_workouts[self.current_date]["Exercises"] [exercise]["Sets"])) reps_labels[i] = QLabel( str(self.fetched_workouts[self.current_date]["Exercises"] [exercise]["Reps"])) rest_labels[i] = QLabel( str(self.fetched_workouts[self.current_date]["Exercises"] [exercise]["Rest"])) self.grid_layout.addWidget(names_labels[i], j, 0) self.grid_layout.addWidget(sets_labels[i], j, 1) self.grid_layout.addWidget(reps_labels[i], j, 2) self.grid_layout.addWidget(rest_labels[i], j, 3) j += 1 layout.addWidget(QLabel("")) layout.addLayout(self.grid_layout) frame.setLayout(layout) return frame def show_date(self): self.current_date = self.get_calendar_date() if not self.current_date in self.fetched_workouts: self.fetched_workouts[self.current_date] = { "Personal Notes": "", "Workout Name": "None" } self.day_label.setText(self.current_date) self.refresh_workout_done(True, True) self.text_edit.setText( self.fetched_workouts[self.current_date]["Personal Notes"]) def get_calendar_date(self): date = self.calendar.selectedDate() day = str(date.day()) if date.day() > 9 else "0" + str(date.day()) month = str( date.month()) if date.month() > 9 else "0" + str(date.month()) parsed_date = "/".join([day, month, str(date.year())]) return parsed_date def show_1_time_window(self): self.create_workout_window = CreateWorkoutWindow( one_time=True, date=self.get_calendar_date()) if self.db_wrapper.connection_exists: self.create_workout_window.refresh_after_creating_signal.connect( lambda signal: self.refresh_workout_done(signal)) self.create_workout_window.setGeometry(100, 200, 300, 300) self.create_workout_window.show() def update_personal_notes(self): self.fetched_workouts[self.current_date][ "Personal Notes"] = self.text_edit.toPlainText() self.db_wrapper.update_table_column(self.table_name, "workouts", json.dumps(self.fetched_workouts)) def change_workout_done(self): self.select_workout_window = SelectWorkout(self.get_calendar_date()) self.select_workout_window.refresh_workout_done_signal.connect( lambda signal: self.refresh_workout_done(signal)) self.select_workout_window.setGeometry(100, 200, 300, 300) self.select_workout_window.show() @pyqtSlot(bool) def refresh_workout_done(self, signal, date_change=False): if signal: if not date_change: self.fetched_workouts = json.loads( self.db_wrapper.fetch_local_column(self.table_name, "workouts")) self.workout_done_label.setText(" ".join([ "Workout Done:", self.fetched_workouts[self.current_date]["Workout Name"] ])) old_right_details_reference = self.grid.itemAt(3).widget() new_right_details = self.create_right_details() self.grid.replaceWidget(old_right_details_reference, new_right_details) old_right_details_reference.setParent(None)
class SelectSession(QWidget): def update(self): self.glob.socket.send_json(dict(action='listsessions')) res = self.glob.socket.recv_json() self.dates = set() self.lst.insertItems(0, [d + " " + name for d, name in res]) for d, n in res: self.dates.add(d.split(' ')[0]) format = QtGui.QTextCharFormat() format.setForeground(QtCore.Qt.blue) format.setBackground(QtCore.Qt.lightGray) import datetime for d in self.dates: dt = datetime.datetime.strptime( d, "%Y-%m-%d" ) # datetime.datetime.strptime(str(_now), "%Y-%m-%d %H:%M:%S.%f") print(dt) self.cal.setDateTextFormat(dt.date(), format) def goto(self): i = self.lst.selectedItems() if (i): item = i[0] import datetime dt = datetime.datetime.strptime(item.text().split(" ")[0], "%Y-%m-%d") self.cal.setSelectedDate(dt.date()) def doExport(self): i = self.lst.selectedItems() for x in i: txt = x.text() d, t, n = txt.split(" ") # mk query for n fname = QFileDialog.getSaveFileName( self, 'Savefile', './', "raw json(*.json);; exel tables(*.csv)") self.glob.socket.send_json( dict(action='getdata', name=n, limit=1000)) res = self.glob.socket.recv_json() if ('.csv' == fname[0][-4:]): print(res[0]) f = open(fname[0], "w") for i, t in enumerate(res[0][0]): f.write('time {0};'.format(i)) f.write("\n") for r in res: for r2 in r[0]: f.write('{0};'.format(r2)) try: if isinstance(r[1], list): for r2 in r[1]: f.write('{0};'.format(str(r2))) else: f.write(str(r[1])) except: f.write(str(r[1])) f.write("\n") else: f = open(fname[0], "w") f.write(json.dumps(res)) f.close() def __init__(self, main, parent=None): super(SelectSession, self).__init__(parent) self.glob = main mainLayout = QVBoxLayout() self.cal = QCalendarWidget() self.export = QPushButton('CSV export') self.cal.setFirstDayOfWeek(QtCore.Qt.Monday) self.lst = QListWidget() self.lst.clicked.connect(self.goto) mainLayout.addWidget(self.cal) mainLayout.addWidget(self.lst) mainLayout.addWidget(self.export) self.export.clicked.connect(self.doExport) mainLayout.addStretch(2) self.setLayout(mainLayout)
class SelectSession(QWidget): def update(self): self.glob.socket.send_json(dict(action='listsessions')) res = self.glob.socket.recv_json() print(res,"asd") self.dates = set() self.lst.insertItems(0, [d + " " + name for d, name in res]) for d, n in res: self.dates.add(d.split(' ')[0]) format = QtGui.QTextCharFormat() format.setForeground(QtCore.Qt.blue) format.setBackground(QtCore.Qt.lightGray) import datetime for d in self.dates: dt = datetime.datetime.strptime(d, "%Y-%m-%d") # datetime.datetime.strptime(str(_now), "%Y-%m-%d %H:%M:%S.%f") print(dt) self.cal.setDateTextFormat(dt.date(), format) def goto(self): i = self.lst.selectedItems() if (i): item = i[0] import datetime dt = datetime.datetime.strptime(item.text().split(" ")[0], "%Y-%m-%d") self.cal.setSelectedDate(dt.date()) def doExport(self): i = self.lst.selectedItems() for x in i: txt = x.text() d, t, n = txt.split(" ") # mk query for n fname = QFileDialog.getSaveFileName(self, 'Savefile', './', "raw json(*.json);; exel tables(*.csv)") self.glob.socket.send_json(dict(action='getdata', name=n, limit=1000)) res = self.glob.socket.recv_json() print(res) if ('.csv' == fname[0][-4:]): #print(res[0]) f = open(fname[0], "w") for i, t in enumerate(res[0][0]): f.write('time {0};'.format(i)) f.write("\n") for r in res: for r2 in r[0]: f.write('{0};'.format(r2)) try: if isinstance(r[1], list): for r2 in r[1]: f.write('{0};'.format(str(r2))) else: f.write(str(r[1])) except: f.write(str(r[1])) f.write("\n") else: f = open(fname[0], "w") f.write(json.dumps(res)) f.close() def __init__(self, main, parent=None): super(SelectSession, self).__init__(parent) self.glob = main mainLayout = QVBoxLayout() self.cal = QCalendarWidget() self.export = QPushButton('CSV export') self.cal.setFirstDayOfWeek(QtCore.Qt.Monday) self.lst = QListWidget() self.lst.clicked.connect(self.goto) mainLayout.addWidget(self.cal) mainLayout.addWidget(self.lst) mainLayout.addWidget(self.export) self.export.clicked.connect(self.doExport) mainLayout.addStretch(2) self.setLayout(mainLayout)
class DateSelector(QGroupBox): def __init__(self, parent): super().__init__(parent) self.parent = parent self.setObjectName('dates_selector') self.setTitle('Dates range') self.setAlignment(Qt.AlignHCenter) self.layout = QHBoxLayout(self) self.layout.setSpacing(3) self.layout.setContentsMargins(5, 5, 5, 5) # Setup 'From' selector from_frame = QFrame(self, Qt.Widget) from_layout = QVBoxLayout(from_frame) self.from_lbl = QLabel(from_frame) self.from_lbl.setText('Select From date') self.from_lbl.setStyleSheet('font: bold') self.from_cal = QCalendarWidget(from_frame) self.from_cal.setGridVisible(True) self.from_cal.setFirstDayOfWeek(Qt.DayOfWeek(1)) self.from_cal.setMaximumDate(QDate().currentDate()) self.from_cal.clicked.connect(self.update_calendars) self.from_cal.clicked.connect(get_main_window().update_start_button) from_layout.addWidget(self.from_lbl, 0, Qt.AlignHCenter) from_layout.addWidget(self.from_cal, 0, Qt.AlignHCenter) # Setup 'To' selector to_frame = QFrame(self, Qt.Widget) to_layout = QVBoxLayout(to_frame) self.to_lbl = QLabel(to_frame) self.to_lbl.setText('Select To date') self.to_lbl.setStyleSheet('font: bold') self.to_cal = QCalendarWidget(to_frame) self.to_cal.setGridVisible(True) self.to_cal.setFirstDayOfWeek(Qt.DayOfWeek(1)) self.to_cal.setMaximumDate(QDate().currentDate()) self.to_cal.clicked.connect(self.update_calendars) self.to_cal.clicked.connect(get_main_window().update_start_button) self.to_cal.setDisabled(True) to_layout.addWidget(self.to_lbl, 0, Qt.AlignHCenter) to_layout.addWidget(self.to_cal, 0, Qt.AlignHCenter) self.layout.addWidget(from_frame, 0, Qt.AlignCenter) self.layout.addWidget(to_frame, 0, Qt.AlignCenter) self.update_calendars() def update_calendars(self): if self.from_cal.selectedDate(): self.to_cal.setEnabled(True) self.from_cal.setMaximumDate(QDate().currentDate()) self.to_cal.setMinimumDate(self.from_cal.selectedDate()) self.to_cal.setMaximumDate(QDate().currentDate()) self.from_lbl.setText(self.from_cal.selectedDate().toString( Qt.ISODate)) if self.to_cal.selectedDate(): self.to_lbl.setText(self.to_cal.selectedDate().toString( Qt.ISODate))