如何在转到今天日历小部件背景更改后单击连接按钮?

2024-06-25 05:25:11 发布

您现在位置:Python中文网/ 问答频道 /正文

第一个self.calendar.setSelectedDate(QDate(currentYear,currentMonth,2))日历小部件背景为蓝色,但单击连接按钮后转到今天日历小部件背景为灰色的self.calendar.setSelectedDate(QDate.currentDate().toPyDate())

。。如何使用转到日期和选定日期背景蓝色按钮

import sys
from datetime import datetime
import calendar
from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget,QPushButton
from PyQt5.QtCore import QDate

class CalendarDemo(QWidget):
    global currentYear, currentMonth

    currentMonth = datetime.now().month
    currentYear = datetime.now().year

    def __init__(self):
        super().__init__()
        self.setWindowTitle('Calendar Demo')
        self.setGeometry(300, 300, 450, 300)
        self.initUI()

    def initUI(self):
        self.calendar = QCalendarWidget(self)
        self.calendar.move(20, 20)

        self.button = QPushButton(self)
        self.button.move(120, 220)
        self.button.clicked.connect(self.buttonfunc)

        self.calendar.setGridVisible(True)

        self.calendar.setMinimumDate(QDate(currentYear, currentMonth - 1, 1))
        self.calendar.setMaximumDate(QDate(currentYear, currentMonth + 1, calendar.monthrange(currentYear, currentMonth)[1]))

        self.calendar.setSelectedDate(QDate(currentYear, currentMonth, 2))


    def buttonfunc(self):
        self.calendar.setSelectedDate(QDate.currentDate().toPyDate())


app = QApplication(sys.argv)
demo = CalendarDemo()
demo.show()
app.exec_()

Tags: fromimportselfdatetime部件defbutton按钮
1条回答
网友
1楼 · 发布于 2024-06-25 05:25:11

我不确定我是否理解正确,但请尝试:

QWidget::setFocus()

Gives the keyboard input focus to this widget (or its focus proxy) if this widget or one of its parents is the active window.

import sys
from datetime import datetime
import calendar
from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget,QPushButton
from PyQt5.QtCore import QDate

class CalendarDemo(QWidget):
#???    global currentYear, currentMonth

    currentMonth = datetime.now().month
    currentYear = datetime.now().year

    def __init__(self):
        super().__init__()
        self.setWindowTitle('Calendar Demo')
        self.setGeometry(300, 300, 450, 300)
        self.initUI()

    def initUI(self):
        self.calendar = QCalendarWidget(self)
        self.calendar.move(20, 20)

        self.button = QPushButton(self)
        self.button.move(120, 220)
        self.button.clicked.connect(self.buttonfunc)

        self.calendar.setGridVisible(True)

        self.calendar.setMinimumDate(QDate(self.currentYear, self.currentMonth - 1, 1))
        self.calendar.setMaximumDate(QDate(self.currentYear, self.currentMonth + 1, 
                                     calendar.monthrange(self.currentYear, self.currentMonth)[1]))

        self.calendar.setSelectedDate(QDate(self.currentYear, self.currentMonth, 2))


    def buttonfunc(self):
        self.calendar.setSelectedDate(QDate.currentDate().toPyDate())
        self.calendar.setFocus()                                        # <<<=====<


app = QApplication(sys.argv)
demo = CalendarDemo()
demo.show()
app.exec_()

enter image description here

相关问题 更多 >