python - 在 pyqt5 Qprinter 中转换为日期格式
问题描述
有没有办法转换为日期格式将使用打印机和 QTextDocument 结果总是显示在图像中的日期和时间?
这是我的代码
def handlePaintRequest(self, printer):
model_hjd = QSqlTableModel()
model_hjd.setTable('transactions')
date = str(self.dateEdit_10.text())
date_2 = str(self.dateEdit_14.text())
self.tableView_22.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
model_hjd.setSort(6, Qt.DescendingOrder)
self.tableView_22.setModel(model_hjd)
model_hjd.select()
filter_ft = "date_d BETWEEN '%s' AND '%s'" % (date, date_2)
model_hjd.setFilter(filter_ft)
self.tableView_22.setModel(model_hjd)
document = QTextDocument()
cursor = QTextCursor(document)
tableFormat = QTextTableFormat()
table = cursor.insertTable(model_hjd.rowCount() + 1, model_hjd.columnCount(), tableFormat)
myheaders = []
for i in range(0, model_hjd.columnCount()):
myheader = model_hjd.headerData(i, Qt.Horizontal)
cursor.insertText(myheader)
cursor.movePosition(QTextCursor.NextCell)
for row in range(0, model_hjd.rowCount()):
for col in range(0, model_hjd.columnCount()):
index = model_hjd.index( row, col )
cursor.insertText(str(index.data()))
cursor.movePosition(QTextCursor.NextCell)
document.print_(printer)
但是日期和时间的结果是这样的
解决方案
您可以使用自定义函数来格式化表中不同类型的数据,例如
@staticmethod
def to_string(entry):
if isinstance(entry, (QtCore.QDate, QtCore.QTime, QtCore.QDateTime)):
return entry.toString(Qt.SystemLocaleShortDate)
else:
return str(entry)
def handlePaintRequest(self, printer):
....
cursor.insertText(self.to_string(index.data()))
....
推荐阅读
- swift - 在文档中生成超过 58 个 PDF 页面时应用程序终止(内存问题?)Swift
- laravel - 雄辩地查询与嵌套 WHERE 的关系
- python - PyTest:如果满足某个条件,如何跳过当前目录下的所有测试?
- c++ - 错误:构造函数必须显式初始化引用成员
- javascript - 使用纯js从参数创建嵌套哈希?
- xml - Odoo 13 如何从代码中使用 Html 小部件编辑字段?
- python - Torch:训练后如何检查重量?
- mongodb - 在 ubuntu wsl2 systemd 上安装 MongoDB 问题 systemd 作为 init 系统(PID 1)
- pandas - 如果列表中的一个值有分号,我如何展平列表中的值?
- kubernetes - 如何通过 kubespray 设置本地主机名通过身份验证?