python-3.x - PyQt5 QCalendarWidget selectedDate 格式更改
问题描述
我一直在尝试使用 QCalendarWidget 来选择稍后将使用的日期。
所以我创建了这个小部件,它显示并且一切看起来都很好。然后我在文本浏览器中打印选定的日期进行测试,我发现日期格式不正确。
这是与此问题相关的代码:
from PyQt5 import QtGui, QtCore, QtWidgets, uic
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.ui = uic.loadUi('rent_creation.ui', self)
#the widgets are called calendarWidget_start_date_2 and calendarWidget_end_date_2
self.ui.activate_thescript.clicked.connect(self.activate_script)
self.show()
def activate_script(self):
global start_date
global end_date
start_date = self.ui.calendarWidget_start_date_2.selectedDate().toString()
end_date = self.ui.calendarWidget_end_date_2.selectedDate().toString()
#print data in text browser
text = "Start date: %s \n End date: %s \n" %(start_date, end_date)
self.ui.textBrowser.setText(text)
start_date = QtCore.QDate.currentDate()
end_date = QtCore.QDate.currentDate()
def run():
app = QtWidgets.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
结果是:
Start date: Wed May 9 2018
End date: Tue May 15 2018
我需要结果中的日期格式为:
Start date: 2018-05-09
End date: 2018-05-15
谢谢您的帮助 :)
(我仅在示例中使用全局变量,显然我将它们踢出我的真实代码)
解决方案
您必须传递toString()
格式"yyyy-MM-dd"
:
...
start_date = self.ui.calendarWidget_start_date_2.selectedDate().toString("yyyy-MM-dd")
end_date = self.ui.calendarWidget_end_date_2.selectedDate().toString("yyyy-MM-dd")
...
或者QtCore.Qt.ISODate
:
...
start_date = self.ui.calendarWidget_start_date_2.selectedDate().toString(QtCore.Qt.ISODate)
end_date = self.ui.calendarWidget_end_date_2.selectedDate().toString(QtCore.Qt.ISODate)
...
推荐阅读
- javascript - 用 JavaScript 隐藏 HTML 中的类?
- hibernate - 如何使用网络存储多对多映射休眠
- botframework - 当我们在 spfx bot 扩展中使用 Adaptivecards Fabric UI 时无法提供输入
- directx-11 - 阴影贴图将未应用阴影贴图的风景放入阴影中
- python - ModuleNotFoundErrorDer 是做什么的
- java - 用 SpannableString 中的字符串替换字符串
- typescript - TypeScript 返回精确的函数推断类型
- localhost - 无法使用我的 IP 地址访问 Artifactory
- svg - 如何弯曲 SVG 图像
- java - 通过休息服务检查数据库表的每条记录