繁体   English   中英

在pyqt5 Qprinter中转换为日期格式

[英]convert to date format in 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()))
    ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM