Qtablewidget i printerdan yazdırmak istiyorum

qtablewidget e database den yazdırdığım şeylerin printer dan çıktısını almak istiyorum. bu konuda tecrübesi olan varmı?yani qtablewidget deki tablonun çıktısını almak istiyorum. yardımcı olursanız sevinirim

def handlePrint(self):
    dialog = QtPrintSupport.QPrintDialog()
    if dialog.exec_() == QtWidgets.QDialog.Accepted:
        self.handlePaintRequest(dialog.printer())

def handlePreview(self):
    dialog = QtPrintSupport.QPrintPreviewDialog()
    dialog.paintRequested.connect(self.handlePaintRequest)
    dialog.exec_()

def handlePaintRequest(self, printer):
    document = QtGui.QTextDocument()
    cursor = QtGui.QTextCursor(document)
    table = cursor.insertTable(
        self.table.rowCount(), self.table.columnCount())
    for row in range(table.rows()):
        for col in range(table.columns()):
            cursor.insertText(self.table.item(row, col).text())
            cursor.movePosition(QtGui.QTextCursor.NextCell)
    document.print_(printer)

şöyle bir şey buldum. sorun şu ki benim tablomda yazısız boş hücreler olunca şöyle bir hata veriyor. AttributeError: ‘NoneType’ object has no attribute ‘text’

1 Beğeni

Hatayı tam olarak nerede veriyor?

cursor.insertText(self.adding.hesapcikartablo.item(row, col).text())

Burası mı yani?

cursor.insertText(self.table.item(row, col).text())

evet burası

Hatayı yakalayıp yerine cursor.insertText("") yazabilirsiniz sanırım. Veya oraya bir şey yazmayıp atlayabilirsiniz.

database den tabloya yazdırıyorum database deki hücre boşsa oraya boşlukmu yazdırayım?

Bir örnekle gösterebilirmisin?

Kodu çalıştıramıyorum ama şöyle bir şey yazdım:

def handlePaintRequest(self, printer):
    document = QtGui.QTextDocument()
    cursor = QtGui.QTextCursor(document)
    table = cursor.insertTable(
        self.table.rowCount(), self.table.columnCount())
    for row in range(table.rows()):
        for col in range(table.columns()):
            try:
                cursor.insertText(self.table.item(row, col).text())
            except:
                pass
            cursor.movePosition(QtGui.QTextCursor.NextCell)
    document.print_(printer)

Veya şunu deneyebilirsiniz:

def handlePaintRequest(self, printer):
    document = QtGui.QTextDocument()
    cursor = QtGui.QTextCursor(document)
    table = cursor.insertTable(
        self.table.rowCount(), self.table.columnCount())
    for row in range(table.rows()):
        for col in range(table.columns()):
            try:
                cursor.insertText(self.table.item(row, col).text())
            except:
                cursor.insertText("")
            cursor.movePosition(QtGui.QTextCursor.NextCell)
    document.print_(printer)

try except’leri de sadece gerekli hataları yakalayacak hale getirirseniz daha iyi olur.