【问题标题】:QDateEdit.date().toString("MMMM dd, yyyy") does not display months in EnglishQDateEdit.date().toString("MMMM dd, yyyy") 不显示英文月份
【发布时间】:2017-08-14 12:25:59
【问题描述】:

我有一个称为日期的QDateEdit。无论我做什么,我都无法让它用英文显示月份,它总是在我当前的语言环境中显示它们。

我已经试过了:

self.ui.date.setLocale(QtCore.QLocale(
    QtCore.QLocale.English, QtCore.QLocale.UnitedStates))

self.ui.date.calendarWidget().setLocale(QtCore.QLocale(
    QtCore.QLocale.English, QtCore.QLocale.UnitedStates))

通过这样做,当我单击小部件时弹出的 calendarWidget 更改为英文。但是,如果我这样做:

print ui.date.date().toString("MMMM dd, yyyy")

我仍然用葡萄牙语而不是英语获得月份。我还尝试使用 python 的 locale 模块更改语言环境,但没有产生任何结果。

【问题讨论】:

  • 使用setLocale 将改变日期在QDateEdit 中的显示方式

标签: python date pyqt locale qdatetime


【解决方案1】:

使用QLocale.toString方法

例如:

print(QLocale(QLocale.English, QLocale.UnitedStates).toString(self.ui.date.date(), "MMMM dd, yyyy"))`

QDate 是日期的区域独立表示。格式化时需要指定语言环境...

【讨论】:

  • 问题是我不想获取当前时间。相反,我试图从 QDataEdit 小部件中读取它,以便用户可以自己插入数据
  • @Eduardo。你为什么要操纵 locale-dependant 日期字符串?你到底想做什么?
  • @ekhumoro 这是一个记录激光生产线制造过程的软件。所以基本上它是一个 GUI,当用户要执行某些过程时,比如说在激光器上安装一个镜头,他必须将有关该过程的测量值和信息添加到软件中,例如日期、开始时间、结束时间、光功率等。所以他在 QDateEdit 中插入日期。问题是报告是用英语制作的,并且这里的计算机在其操作系统设置中具有不同的区域设置。我希望它符合任何计算机设置
  • @Eduardo。这个答案似乎完全符合您的要求。你真的试过了吗?如果是这样,结果与您的预期有何不同?
  • @ekhumoro 它确实有效。我第一次看的时候看错了。我认为它使用 Locale 来获取当前时间而不是小部件时间。谢谢你们俩
猜你喜欢
  • 2019-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2019-07-03
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多