hi,
i'm making a program where i read some tables from a mariadb server and show them on a QtreeView using QtSql. I would like to print the tables content. i'm using pyqt4 as gui.
I tried with QtextDocument but i'm not doing it right, maybe someone can help me. Thank you
This is my code:
i'm making a program where i read some tables from a mariadb server and show them on a QtreeView using QtSql. I would like to print the tables content. i'm using pyqt4 as gui.
I tried with QtextDocument but i'm not doing it right, maybe someone can help me. Thank you
This is my code:
import sys,os.path, os
from PyQt4 import QtGui, uic,QtSql,QtCore
import time
class raport_vanzari(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
file_path = os.path.abspath("ui/raport_vanzari.ui")
uic.loadUi(file_path, self)
# self.client_close_btn.pressed.connect(self.close)
self.move(QtGui.QApplication.desktop().screen().rect().center() - self.rect().center())
# self.setFixedSize(self.size())
self.refresh_oper.pressed.connect(self.run_refresh_data_oper)
self.rap_lista_oper()
self.table_operatori.doubleClicked.connect(self.run_dublu_click)
self.cauta_btn.pressed.connect(self.raport_pe_zile)
self.raportlunar_btn.pressed.connect(self.rap_vanzari_lunar)
self.print1_btn.pressed.connect(self.handlePreview)
def handlePrint(self):
dialog = QtGui.QPrintDialog()
if dialog.exec_() == QtGui.QDialog.Accepted:
self.handlePaintRequest(dialog.printer())
def handlePreview(self):
dialog = QtGui.QPrintPreviewDialog()
dialog.paintRequested.connect(self.handlePaintRequest)
dialog.exec_()
def handlePaintRequest(self, printer):
document = QtGui.QTextDocument()
cursor = QtGui.QTextCursor(document)
model = self.table.model()
table = cursor.insertTable(model.rowCount(), model.columnCount())
for row in range(table.rows()):
for column in range(table.columns()):
cursor.insertText(model.item(row, column).text())
cursor.movePosition(QtGui.QTextCursor.NextCell)
document.print_(printer)
def raport_pe_zile(self):
date_start = self.start_date_line.displayText()
date_stop = self.stop_date_line.displayText()
query = QtSql.QSqlQuery()
query.prepare("SELECT sum(valoare_totala) FROM documente_iesire WHERE data_emis BETWEEN '" + str(date_start) + " 00:00:00.00' AND '" + str(date_stop) + " 23:59:59.999' AND document='bon de casa'")
query.exec_()
while (query.next()):
total_sum = str(query.value(0).toString())
self.total_perioada.setText(total_sum+" Lei")
date_start = self.start_date_line.displayText()
date_stop = self.stop_date_line.displayText()
self.model = QtSql.QSqlQueryModel()
self.model.setQuery("SELECT document,concat(valoare_totala,' Lei'),data_emis,user_emis FROM documente_iesire WHERE data_emis BETWEEN '"+str(date_start)+" 00:00:00.00' AND '"+str(date_stop)+" 23:59:59.999' AND document='bon de casa'")
self.model.setHeaderData(0, QtCore.Qt.Horizontal, self.tr("Nume document"))
self.model.setHeaderData(1, QtCore.Qt.Horizontal, self.tr("Valoare document"))
self.model.setHeaderData(2, QtCore.Qt.Horizontal, self.tr("Data emitere"))
self.model.setHeaderData(3, QtCore.Qt.Horizontal, self.tr("Utilizator"))
self.table.setModel(self.model)
self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.table.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
time_print = time.strftime("%d/%m/%Y-%H:%M:%S")
self.status_v_1.setText('Raport executat: =====> ' + time_print)
def run_dublu_click(self):
self.select_row_operatori()
self.rap_vanzari_oper()
def run_refresh_data_oper(self):
self.rap_lista_oper()
def rap_lista_oper(self):
self.model = QtSql.QSqlQueryModel()
self.model.setQuery("SELECT nume,sec_lvl FROM operatori")
self.model.setHeaderData(0, QtCore.Qt.Horizontal, self.tr("Nume operator"))
self.model.setHeaderData(1, QtCore.Qt.Horizontal, self.tr("Nivel acces"))
self.table_operatori.setModel(self.model)
self.table_operatori.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.table_operatori.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
time_print = time.strftime("%d/%m/%Y-%H:%M:%S")
self.status_v_1.setText('Date citite: =====> ' + time_print)
def select_row_operatori(self):
index = self.table_operatori.selectionModel().selectedRows()[0]
id_us = self.table_operatori.model().data(index).toString()
den = unicode(str(id_us))
query = QtSql.QSqlQuery()
query.prepare("SELECT nume FROM operatori WHERE nume=:den;")
query.bindValue(":den", den)
query.exec_()
# column = query.record().count()
# print (column)
while (query.next()):
numeOut = str(query.value(0).toString())
self.nume_oper_line.setText(numeOut)
time_print = time.strftime("%d/%m/%Y-%H:%M:%S")
self.status_v_1.setText('Operator selectat: =====> ' + time_print)
def rap_vanzari_oper(self):
time_query = time.strftime("%Y/%m/%d")
self.model = QtSql.QSqlQueryModel()
nume = self.nume_oper_line.displayText()
query = QtSql.QSqlQuery()
query.prepare("SELECT sum(valoare_totala) FROM documente_iesire WHERE document='bon de casa' AND user_emis='"+nume+"' AND data_emis BETWEEN '"+time_query+" 00:00:00.00' AND '"+time_query+" 23:59:59.999' ;")
query.exec_()
while (query.next()):
suma_val = str(query.value(0).toString())
self.total_oper_line.setText(suma_val+" Lei")
self.model.setQuery("SELECT document,concat(valoare_totala, ' Lei'),data_emis FROM documente_iesire WHERE document='bon de casa' AND user_emis='"+nume+"' AND data_emis BETWEEN '"+time_query+" 00:00:00.00' AND '"+time_query+" 23:59:59.999';")
self.model.setHeaderData(0, QtCore.Qt.Horizontal, self.tr("Nume document"))
self.model.setHeaderData(1, QtCore.Qt.Horizontal, self.tr("Valoare document"))
self.model.setHeaderData(2, QtCore.Qt.Horizontal, self.tr("Data emitere"))
self.table_vanzari.setModel(self.model)
self.table_vanzari.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.table_vanzari.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
time_print = time.strftime("%d/%m/%Y-%H:%M:%S")
self.status_v_1.setText('Date vanzari citite: =====> ' + time_print)
def rap_vanzari_lunar(self):
time_query_1 = time.strftime("%Y/%m/1")
time_query_2 = time.strftime("%Y/%m/31")
self.model = QtSql.QSqlQueryModel()
nume = self.nume_oper_line.displayText()
query = QtSql.QSqlQuery()
query.prepare(
"SELECT sum(valoare_totala) FROM documente_iesire WHERE document='bon de casa' AND data_emis BETWEEN '" + time_query_1 + " 00:00:00.00' AND '" + time_query_2 + " 23:59:59.999' ;")
query.exec_()
while (query.next()):
suma_val = str(query.value(0).toString())
self.total_lunar.setText(suma_val + " Lei")
self.model.setQuery("SELECT document,concat(valoare_totala, ' Lei'),data_emis,user_emis FROM documente_iesire WHERE document='bon de casa' AND data_emis BETWEEN '" + time_query_1 + " 00:00:00.00' AND '" + time_query_2 + " 23:59:59.999';")
self.model.setHeaderData(0, QtCore.Qt.Horizontal, self.tr("Nume document"))
self.model.setHeaderData(1, QtCore.Qt.Horizontal, self.tr("Valoare document"))
self.model.setHeaderData(2, QtCore.Qt.Horizontal, self.tr("Data emitere"))
self.model.setHeaderData(3, QtCore.Qt.Horizontal, self.tr("Operator"))
self.raport_lunar_table.setModel(self.model)
self.raport_lunar_table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.raport_lunar_table.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
time_print = time.strftime("%d/%m/%Y-%H:%M:%S")
self.status_v_1.setText('Raport lunar de vanzari creat: =====> ' + time_print)
