gpt4 book ai didi

python - pyqt date编辑最大值

转载 作者:行者123 更新时间:2023-12-01 08:42:26 25 4
gpt4 key购买 nike

我使用 pyqt 设计器创建了一个 UI,其中有 2 个 dateEdit 小部件,用于指定时间窗口。它们都设置为弹出日历,以使用户生活更轻松。我想确保您永远无法获得“开始”大于“结束”的时间窗口。

示例开始和结束是日期编辑小部件:

起始值 = 20181010

结束值=20181011

用户选择开始小部件,弹出日历,用户可以选择 20181012,这将导致 start.value > end.value,这在我的应用程序中是无意义的。

我需要能够强制确保这种情况不会发生。

有多种方法可以解决这个问题,但是每一种方法都需要我有一些东西来临时劫持回调,例如 ComboBox 中的 ComboBox.currentIndexChanged 。我找不到 dateEdit 的类似函数。

我面临的问题是将开始日期设置为始终小于或等于结束日期。我很高兴始终固定结束日期,因此我只需要限制其中一个日期编辑。问题是唯一的“最大”约束是静态的,因此我需要劫持触发日历打开的回调,以便我可以插入读取其他 dateEdit 小部件并将其值设置为最大值的代码当前的。

关于如何进行劫持有任何线索吗?替代计划也被广泛接受。

最佳答案

你必须使用dateChanged信号来更新maximunDate或minimumDate,根据情况添加适当的偏移量:

from PyQt5 import QtCore, QtWidgets

class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)

self.date_from = QtWidgets.QDateEdit()
self.date_to = QtWidgets.QDateEdit()
for w in (self.date_from, self.date_to, ):
w.setDisplayFormat("yyyyMMdd")
w.setCalendarPopup(True)
self.setup_date()

lay = QtWidgets.QHBoxLayout(self)
lay.addWidget(self.date_from)
lay.addWidget(self.date_to)

def setup_date(self):
self.date_from.dateChanged.connect(self.on_date_from_changed)
self.date_to.dateChanged.connect(self.on_date_to_changed)
self.date_from.setDate(QtCore.QDate(2018, 10, 10))
self.date_to.setDate(QtCore.QDate(2018, 10, 11))

@QtCore.pyqtSlot(QtCore.QDate)
def on_date_from_changed(self, date):
self.date_to.setMinimumDate(date.addDays(1))

@QtCore.pyqtSlot(QtCore.QDate)
def on_date_to_changed(self, date):
self.date_from.setMaximumDate(date.addDays(-1))

if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())

关于python - pyqt date编辑最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53449844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com