首页 > 编程语言 >python 打印功能测试程序 2

python 打印功能测试程序 2

时间:2023-09-22 10:49:24浏览次数:53  
标签:widget printer python 打印 测试程序 df import table QPrinter

# python 打印功能测试程序


from CDHTMLTable import HTMLTable
from PySide2.QtCore import  QRect, QPoint, QSize, Qt
from PySide2.QtGui import QImage, QIcon, QPixmap, QPainter, QTextDocument
from PySide2.QtWidgets import QApplication, QMainWindow, QLabel, QSizePolicy, QAction, QWidget, QTableWidget, QPushButton, QVBoxLayout, QTableWidgetItem,QMessageBox, QDesktopWidget, QStyleFactory
from PySide2.QtPrintSupport import QPrinter, QPrintDialog, QPrintPreviewDialog, QPrintPreviewWidget
import sys
import numpy as np
from option_mssql import mssql_query


def PositionSearch():
    sql = '''        
       select holddate 日期, productname 品种, upper(productgroupID) + DELIVERYMONTH 合约, OPENPRICE 开盘价, HIGHESTPRICE 最高价, LOWESTPRICE 最低价, CLOSEPRICE 收盘价, 
       settlementprice 结算价, ZD1_CHG 收盘价变化, ZD2_CHG 结算价变化, VOLUME 成交手数, TURNOVER 成交金额, TASVOLUME TAS手数, OPENINTEREST 持仓量  
       from (select *, ROW_NUMBER() OVER (PARTITION BY holddate,PRODUCTGROUPID ORDER BY VOLUME DESC) dateNumber from F_KX ) T
       where  holddate >= '2023-01-01'  and dateNumber=1 and VOLUME<>0  order by  productgroupID, holddate  
       '''

    # 持仓汇总 查询 开始
    df = mssql_query(sql, 3)
    # df = df.iloc[:,1:]
    df.insert(0, '序号', range(1, df.shape[0]+1, 1))
    # print(df.head(5000))
    return df

def printHtml():
    # 标题
    table = HTMLTable(caption=('结算价情况表'))
    df = PositionSearch()
    df = df.replace(np.nan, None)   #将值NaN,替换成 None

    headers = tuple(df.columns)   # 表头内容
    tuples = [tuple(x) for x in df.values]

    # 表头行
    table.append_header_rows((headers,))
    # 数据行
    table.append_data_rows(tuples)

    # 标题样式
    table.caption.set_style({
        'padding': '2px',
        'font-size': '220px',
        'text-align': 'center',

    })
    # 表格样式,即<table>标签样式
    table.set_style({
        'text-align': 'center',
        'border-collapse': 'collapse',
        'word-break': 'keep-all',
        'white-space': 'nowrap',
        'vertical-align': 'middle',
        'margin': 'auto',
    })
    # # 统一设置所有单元格样式,<td>或<th>
    table.set_cell_style({
        'width': "15%",
        'border-color': '#000',
        'border-width': '1px',
        'border-style': 'solid',
        'padding': '3px',
        'font-size': '90px',
        'text-align': 'center',
    })
    # # 表头样式
    table.set_header_row_style({
        'color': '#fff',
        'background-color': '#48a6fb',
        'font-size': '80px',
        'margin-top': '2px',
    })

    body = table.to_html()
    # print(body)
    # html的charset='UTF-8'必须加上,否则中午会乱码
    html = "<!DOCTYPE html><html><head><meta charset='UTF-8'></head><body>{0}</body></html>".format(body)
    # print(html)
    # 生成图片
    textDocument = QTextDocument()
    textDocument.setHtml(html)
    textDocument.print_(printer)


def printMain():
    # /* 打印预览 */
    preview = QPrintPreviewDialog(printer, widget)
    preview.setWindowState(Qt.WindowMaximized)
    preview.paintRequested.connect(printHtml)
    preview.exec()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    printer = QPrinter(QPrinter.HighResolution)
    printer.setPageSize(QPrinter.A4)
    printer.setOrientation(QPrinter.Landscape)   # (QPrinter::Landscape常用)(Orientation(纵向:Portrait 横向:Landscape))
    printer.setPageMargins(0.1, 0.1, 0.1, 0.1, QPrinter.Millimeter)

    widget = QWidget()
    button=QPushButton('打印')
    button.clicked.connect(printMain)
    layout = QVBoxLayout(widget)
    layout.addWidget(button)
    widget.setWindowTitle('Pyhton打印测试程序')
    widget.setWindowIcon(QIcon("./images/rlylogo.ico"))
    widget.show()
    sys.exit(app.exec_())

标签:widget,printer,python,打印,测试程序,df,import,table,QPrinter
From: https://www.cnblogs.com/HeroZhang/p/17721732.html

相关文章

  • uboot 设置内核打印等级
     (1)=>setenvconsolettyO2115200n8loglevel=4 (2)=>save  注意设置环境变量后单次启动有效,如果想一直有效需要调用save命令 (3)=>boot   正常启动  系统正常启动后查看内核的打印等级(4)控制台打印等级修改成功的话会提示cat/proc/sys/kernel/printk......
  • Ubuntu 23.10/24.04 LTS 放弃默认使用 snap 版 CUPS 打印堆栈
    导读Canonical的开发者、OpenPrinting的项目负责人TillKamppeter今年5月表示,计划在Ubuntu23.10(ManticMinotaur)上默认使用Snap版本的CUPS打印堆栈。不过经过数月的测试,官方放弃了这项决定。Ubuntu23.10(ManticMinotaur)和Ubuntu24.04LTS发行版默认还是......
  • Python Pywavelet 小波阈值
    https://blog.csdn.net/Dax1n/article/details/70304316https://buildmedia.readthedocs.org/media/pdf/pywavelets/stable/pywavelets.pdf 5.2.14节......
  • multiprocessing:Python像线程一样管理进程
    前言multiprocessing库是基于threadingAPI,它可以把工作划分为多个进程。有些情况下,multiprocessing可以作为临时替换取代threading来利用多个CPU内核,相应地避免Python全局解释器锁所带来的计算瓶颈。下面,我们来看看multiprocessing库创建进程与threading库有多像。创建一个进......
  • python爬虫简易demo
    以下是一个简单的Python爬虫示例,用于从指定的网页中提取标题和链接:importrequestsfrombs4importBeautifulSoupdefcrawl(url):#发送HTTPGET请求获取网页内容response=requests.get(url)#使用BeautifulSoup解析网页内容soup=BeautifulSoup(r......
  • Python集合
    #集合是一个无序的不重复元素序列numset={1,2,2,3}#如果存在重复元素保留一个print(numset)sqared={x**2forxin[1,2,3]}#也支持集合推导式print(sqared)set1=set([1,2,3])#从列表和元组通过set()都可转集合print(set1)set1=set(range(1,5))print(set1)s......
  • python实现消消乐游戏界面
    功能需求创建一个简单的10x10的游戏区域,其中包含了6种颜色的方块。实现思路1.首先导入pygame和random库。2.设置屏幕大小为800x600像素。3.定义一个颜色列表,包含了6种不同的颜色。 定义方块的大小为40像素。4.创建一个10x10的游戏区域,每个格子的颜色从颜色列表中随机选择。5.......
  • python: Bubble Sort
     #encoding:utf-8#版权所有2023涂聚文有限公司#许可信息查看:#描述:#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python311#Datetime:2023/9/2121:55#User:geovindu#Product:PyCharm#Project:EssentialAlgor......
  • Python - 读取CSV文件发现有重复数据,如何清洗以及保存为CSV文件,这里有完整的过程!!!!
    语言:Python功能:1、清洗CSV文件中重复数据。2、保存为CSV文件大体流程:1、首先观察CSV文件中的数据布局格式如何?2、通过csv包读取数据。并根据规则使用continue,来跳过本次循环,并将所需数据保存到列表A中,当列表A中的数据变成len(列表A)==2时,将此数据保存到列......
  • Python中numpy出现has no attribute '_no_nep50_warning'错误怎么办?
      本文介绍在Python中,numpy库出现报错module'numpy'hasnoattribute'_no_nep50_warning'的解决方法。  一次,在运行一个Python代码时,发现出现报错module'numpy'hasnoattribute'_no_nep50_warning',如下图所示。  其中,这一代码本来在Windows平台下运行是没有问题的,......