Я хочу иметь возможность выделить день из моей SQL Базы данных в моем виджете календаря, так же, как подсвечивается текущий день при запуске программы, в моем примере это красная подсветка.
То, что я хочу, - это когда пользователь нажимает на выделенную дату, текст, который находится рядом с датой в базе данных, отображается на ярлыке под календарем.
Это моя страница, которую я сделал с помощью QT Дизайнер:
PYQT Page
Это база данных, в которой есть все данные:
SQL База данных
И это код, который создает страницу QT:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Calendar.ui'
#
# Created by: PyQt5 UI code generator 5.14.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
import sqlite3
import datetime
import PyQt5
from PyQt5.QtCore import QDate, Qt
from PyQt5.QtGui import (QColor, QFont, QTextCharFormat, QTextLength,
QTextTableFormat)
from PyQt5.QtWidgets import (QApplication, QComboBox, QDateTimeEdit,
QHBoxLayout, QLabel, QMainWindow, QSpinBox, QTextBrowser, QVBoxLayout,
QWidget)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1200, 900)
MainWindow.setMinimumSize(QtCore.QSize(0, 0))
MainWindow.setMaximumSize(QtCore.QSize(1200, 900))
MainWindow.setStyleSheet("background-color: rgb(200, 200, 200);")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.Header = QtWidgets.QTextEdit(self.centralwidget)
self.Header.setEnabled(False)
self.Header.setGeometry(QtCore.QRect(-10, 0, 1300, 110))
self.Header.setMinimumSize(QtCore.QSize(1300, 110))
self.Header.setMaximumSize(QtCore.QSize(1300, 110))
self.Header.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"border-color: rgb(255, 255, 255);\n"
"border-width : 1.2px;\n"
"border-style:inset;")
self.Header.setObjectName("Header")
self.LECTURP = QtWidgets.QLabel(self.centralwidget)
self.LECTURP.setGeometry(QtCore.QRect(512, 2, 180, 61))
self.LECTURP.setStyleSheet("color: rgb(0, 176, 240);\n"
"font: 8pt \"MS Shell Dlg 2\";\n"
"text-decoration: underline;\n"
"background-color: rgb(255, 255, 255);\n"
"font: 28pt \"Calbri\";\n"
"text-decoration: underline;")
self.LECTURP.setObjectName("LECTURP")
self.LecturpBanner = QtWidgets.QLabel(self.centralwidget)
self.LecturpBanner.setGeometry(QtCore.QRect(320, 60, 561, 31))
self.LecturpBanner.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"color: rgb(0, 176, 240);\n"
"font: 14pt \"Calibri\";")
self.LecturpBanner.setObjectName("LecturpBanner")
self.calendarWidget = QtWidgets.QCalendarWidget(self.centralwidget)
self.calendarWidget.setGeometry(QtCore.QRect(30, 110, 1141, 661))
self.calendarWidget.setStyleSheet("alternate-background-color: rgb(255, 255, 255);\n"
"font: 75 16pt \"MS Shell Dlg 2\";\n"
"background-color: rgb(200, 200, 200);\n"
"selection-background-color: rgb(255, 0, 0);")
self.calendarWidget.setObjectName("calendarWidget")
self.DateInfoOutput = QtWidgets.QLabel(self.centralwidget)
self.DateInfoOutput.setGeometry(QtCore.QRect(30, 778, 1141, 97))
self.DateInfoOutput.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"border-color: rgb(0, 0, 0);\n"
"font: 16pt \"Calibri\";\n"
"border-width : 1.2px;\n"
"border-style:inset;")
self.DateInfoOutput.setText("")
self.DateInfoOutput.setObjectName("DateInfoOutput")
self.WeekNumber = QtWidgets.QLabel(self.centralwidget)
self.WeekNumber.setGeometry(QtCore.QRect(56, 168, 113, 49))
self.WeekNumber.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"font: 16pt \"MS Shell Dlg 2\";")
self.WeekNumber.setObjectName("WeekNumber")
self.calendarWidget.raise_()
self.Header.raise_()
self.LECTURP.raise_()
self.LecturpBanner.raise_()
self.DateInfoOutput.raise_()
self.WeekNumber.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.editor = QTextBrowser()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.LECTURP.setText(_translate("MainWindow", "LECTURP"))
self.LecturpBanner.setText(_translate("MainWindow", "Lecture, Exam, Coursework, Timetable, Uploader and Reminder Program."))
self.WeekNumber.setText(_translate("MainWindow", "Week No."))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
В моем коде я попытался сделать это, используя этот код. Эта часть кода выдает ошибку, в которой часть date = Qdate (All_Dates, 3) выдает ошибку.
Создается ошибка: аргументы не соответствуют ни одному перегруженному вызову: QDate (): too много аргументов QDate (int, int, int): аргумент 1 имеет непредвиденный тип 'str' QDate (int, int, int, QCalendar): аргумент 1 имеет неожиданный тип 'str' Приведенный ниже код предназначен только для создания страницы QT:
connection = sqlite3.connect("Calendardatabase.db")
# This is the code for the database cursor
crsr = connection.cursor()
Count = 1
crsr.execute('SELECT Day FROM Calendar WHERE Number = ?', (Count,))
RawDay = crsr.fetchone()
Day = str(RawDay)
Day = Day.replace('(', '')
Day = Day.replace(')', '')
Day = Day.replace(',', '')
Day = int(Day)
crsr.execute('SELECT Month FROM Calendar WHERE Number = ?', (Count,))
RawMonth = crsr.fetchone()
Month = str(RawMonth)
Month = Month.replace('(', '')
Month = Month.replace(')', '')
Month = Month.replace(',', '')
Month = int(Month)
crsr.execute('SELECT Year FROM Calendar WHERE Number = ?', (Count,))
RawYear = crsr.fetchone()
Year = str(RawDay)
Year = Year.replace('(', '')
Year = Year.replace(')', '')
Year = Year.replace(',', '')
Year = int(Year)
Current_Day = datetime.date.today().strftime("%A,")
Current_Date = datetime.date.today().strftime("%d")
Current_Month = datetime.date.today().strftime("%B")
Combined_Date = ("It is a " + Current_Day + " It is the " + Current_Date + " of " + Current_Month)
Combined_Date = str(Combined_Date)
self.DateInfoOutput.setText(Combined_Date)
cursor = self.editor.textCursor()
self.selectedDate = QDate.currentDate()
All_Dates = (Day, Month, Year)
All_Dates = str(All_Dates)
date = QDate(All_Dates, 3)
format = cursor.charFormat()
format.setFontPointSize(self.fontSize)
boldFormat = QTextCharFormat(format)
boldFormat.setFontWeight(QFont.Bold)
highlightedFormat = QTextCharFormat(boldFormat)
highlightedFormat.setBackground(Qt.yellow)
cell = table.cellAt(0, weekDay-1)
cellCursor = cell.firstCursorPosition()
cellCursor.insertText(QDate.longDayName(weekDay), boldFormat)