QT软件园:海量软件绿色下载.

系统教程| 新闻热点| 软件教程| 软件资讯| 游戏攻略

软件
软件
文章
搜索
当前位置: 首页PC软件办公软件→ LightBlack工具 Python版
LightBlack工具

LightBlack工具

Python版 LightBlack工具是由以为论坛大佬制作 评分:3
下载地址
  • 软件大小:102.00M
  • 软件语言:简体中文
  • 更新时间:2021-09-01 15:30:37
  • 软件类别:免费软件/办公软件
  • 软件性质:PC软件
  • 软件厂商:
  • 运行环境:WinAll、Win10、Win7、WinXP
  • 软件等级:
  • 相关推荐: PDF转WORD神器 pdf转word系统 PDF转WORD转换工具
  • 软件介绍
  • 软件截图
  • 猜你喜欢
  • 同类推荐
  • 相关文章

LightBlack工具是由以为论坛大佬制作的一个Excel工具箱软件,轻松实现Excel搜索查询,PDF转Word等功能,最大的特点就是软件是单文件程序,操作非常方便,内置的功能全部免费使用。特别适合经常需要进行PDF转换的用户使用。

软件操作简单,先导入文件然后单击按钮就可以了(其实刚设定的时候连按钮都没,直接导入就自动转换了,后面想想,可能有些人不喜欢这种模式,所以改回了传统鼠标单击按钮),现在是可拖放也可导入,随便了,其他我做了限制,不是规定文件不能转换,比如Word转PDF,你导入PDF然后点击Word转PDF就不行,没办法不设置,到时候又软件有bug,转换完,会在左下角提示转换成功和文件路径的。

源码一览

from win32com.client import constants, gencache

from PyQt5.QtGui import *

from PyQt5.QtWidgets import *

from PyQt5.QtCore import Qt

from xlrd import *

import pandas

import fitz

import os

import pandas as pd

import sys

class Main_Win(QWidget):

def __init__(self):

self.i = 0

self.filename = “”

super(Main_Win,self).__init__()

self.setAcceptDrops(True)

self.Main_WinUI()

def Main_WinUI(self):

self.setWindowTitle(‘Excel查询系统’)

self.resize(1700,880)

screen = QDesktopWidget().screenGeometry()

size = self.geometry()

newLeft = (screen.width() - size.width()) // 2

newTop = (screen.height() - size.height()) // 2

self.move(newLeft, newTop)

self.setFixedSize(1700,880)

palette = QPalette()

pix = QPixmap(“D:\\BaiduNetdiskDownload\\d\\d\\pythonandpycharm\\QT5_new\\images\\six.png”)

pix = pix.scaled(1300, 880)

palette.setBrush(QPalette.Background, QBrush(pix))

self.setPalette(palette)

self.setToolTip(‘温馨提示:如果不会使用请先阅读使用方法!’)

QToolTip.setFont(QFont(‘Times’,10,QFont.Black))

#self.setWindowOpacity(0.8)

#self.setAttribute(Qt.WA_TranslucentBackground)

self.setWindowIcon(QIcon(os.getcwd()+‘\\images\\Book.ico’))

self.setWindowIcon(QIcon(‘D:\\BaiduNetdiskDownload\\d\\d\\pythonandpycharm\\QT5_new\\images\\favicon.ico’))

self.Main_WinLayout()

self.show()

def Main_WinLayout(self):

self.group = QGroupBox(self)

self.group.setTitle(‘参数设置区’)

self.group.setGeometry(10,10,400,300)

self.layout = QGridLayout()

self.label_one = QLabel(‘《font color=#9370DB》请输入要搜索的关键词:《\\font》’)

self.layout.addWidget(self.label_one,0,0)

self.edit_one = QLineEdit()

self.edit_one.setAlignment(Qt.AlignCenter)

self.edit_one.setPlaceholderText(‘这里输入要搜索的关键词’)

self.layout.addWidget(self.edit_one,0,1)

self.button_one = QPushButton(‘开始搜索’)

self.layout.addWidget(self.button_one,1,0)

self.button_one.clicked.connect(self.dialoginfo)

self.button_two = QPushButton(‘导入文件’)

self.layout.addWidget(self.button_two, 1, 1)

self.button_two.clicked.connect(self.groove_five)

self.button_four = QPushButton(‘PDF转图片’)

self.layout.addWidget(self.button_four, 2, 0)

self.button_four.clicked.connect(self.Start_PDF_Image)

self.button_five = QPushButton(‘Word转PDF’)

self.layout.addWidget(self.button_five, 2, 1)

self.button_five.clicked.connect(self.Start_Word_PDF)

# ---------------------------------------------------------------

self.group_two = QGroupBox(self)

self.group_two.setTitle(‘输出日志’)

self.group_two.setGeometry(10, 320, 400, 550)

self.textedit_one = QTextEdit()

self.textedit_one.setHtml(‘《font color=red》温馨提示!《\\font》’)00FA9A

self.textedit_one.setFont(QFont(“Times”,11))

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(“\n目前软件只支持Excel,Word,PDF文件\n”)

self.layout_two = QGridLayout()

self.textedit_one.setReadOnly(True)

self.layout_two.addWidget(self.textedit_one)

self.group_two.setLayout(self.layout_two)

self.group_three = QGroupBox(self)

self.layout_two = QHBoxLayout()

self.group_three.setTitle(‘订单数据’)

self.group_three.setGeometry(420, 10, 1265, 860)

self.table_one = QTableWidget()

# self.table_one.setColumnWidth(0, 200)#设置单元格的宽度

# self.table_one.setColumnWidth(1, 200)

# self.table_one.setColumnWidth(2, 200)

# self.table_one.setColumnWidth(3, 200)

# self.table_one.setColumnWidth(4, 200)

self.setContextMenuPolicy(Qt.CustomContextMenu)

self.customContextMenuRequested.connect(self.showMenu)

self.contextMenu = QMenu(self)

self.CP = self.contextMenu.addAction(‘复制’)

self.CP.triggered.connect(lambda:self.selected_tb_text(self.table_one))

self.CP = self.contextMenu.addAction(‘打开表格可编辑’)

self.CP.triggered.connect(lambda: self.compile_True(self.table_one))

self.CP = self.contextMenu.addAction(‘关闭表格可编辑’)

self.CP.triggered.connect(lambda: self.compile_False(self.table_one))

self.CP = self.contextMenu.addAction(‘添加数据’)

self.CP.triggered.connect(lambda: self.appendinfo(self.table_one))

self.layout_two.addWidget(self.table_one)

self.group_three.setLayout(self.layout_two)

QApplication.processEvents()

self.group.setLayout(self.layout)

def dialoginfo(self):

find_str = []

if self.filename:

if self.edit_one.text() == “”:

reply=QMessageBox.question(win, ‘温馨提示!’, ‘大哥,你关键字,怎么也输点吧!’, QMessageBox.Yes | QMessageBox.No, (QMessageBox.Yes))

if reply == QMessageBox.Yes:

pass

else:

self.dialoginfo()

else:

for i in self.data.to_dict(‘records’):

for value in i.values():

if str(value) == str(self.edit_one.text()):

find_str.append(i)

print(find_str)

if len(find_str):

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f“\n查询成功!!一共{len(find_str)}条数据!!\n”)

self.table_one.setRowCount(len(find_str))

self.table_one.clearContents()

for s in range(len(find_str)):

for key,value in find_str[s].items():

item = QTableWidgetItem(str(value))

item.setTextAlignment(Qt.AlignCenter)

self.table_one.setItem(s, self.head_list.index(key), item)

else:

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f“\n查询失败,找不到该条信息!!!\n”)

else:

reply = QMessageBox.question(win, ‘温馨提示!’, ‘请先导入文件在查询!!’, QMessageBox.Yes | QMessageBox.No , (QMessageBox.Yes))

if reply == QMessageBox.Yes:

pass

else:

self.dialoginfo()

def selected_tb_text(self,table_view):

try:

indexes = table_view.selectedIndexes() # 获取表格对象中被选中的数据索引列表

indexes_dict = {}

for index in indexes: # 遍历每个单元格

row, column = index.row(), index.column() # 获取单元格的行号,列号

if row in indexes_dict.keys():

indexes_dict[row].append(column)

else:

indexes_dict[row] = [column]

print(indexes_dict)

print(row,column)

text = []

for row, columns in indexes_dict.items():

row_data = []

for column in columns:

try:

data = table_view.item(row, column).text()

except BaseException as e:

data = ‘ ’

finally:

if row_data:

row_data = ‘ ’ + data

else:

row_data = data

if text:

if len(text) % 4 == 0:

text.append(‘\n’)

text.append(row_data)

else:

text.append(row_data)

print(text)

text_two = ‘’

for item in text:

text_two += item

try:

clipboard = QApplication.clipboard()

clipboard.setText(text_two) # 复制到粘贴板

except BaseException as e:

print(e)

except BaseException as e:

print(e)

clipboard = QApplication.clipboard()

clipboard.setText(text_two)

return ‘’

def keyPressEvent(self, event): # 重写键盘监听事件

# 监听 CTRL+C 组合键,实现复制数据到粘贴板

if (event.key() == Qt.Key_C) and QApplication.keyboardModifiers() == Qt.ControlModifier:

text = self.selected_tb_text(self.table_one) # 获取当前表格选中的数据

def showMenu(self, pos):

print(pos)

self.contextMenu.exec_(QCursor.pos()) # 在鼠标位置显示

def groove_five(self):

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(“\n正在导入Excel文件。..。..。..。..。.\n”)

self.filename,ok = QFileDialog.getOpenFileName(self,‘请选择EXCAL文件!!!!’,‘C:\\’,‘文件类型默认所有,这个你不用担心:(*.*)’)

self.excal()

def excal(self):

print(self.filename)

self.head_list = []

self.sum_list = []

if self.filename[-4:] == “xlsx” or self.filename[-3:] == “xls”:

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(“\n导入成功!\n”)

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f‘\n成功导入Excel文件!,路径为:{self.filename}\n’)

self.data = pd.read_excel(self.filename)

for i in self.data:

self.head_list.append(i)

self.table_one.setRowCount(len(self.data[i].values))

self.table_one.setColumnCount(len(self.head_list))

self.table_one.setHorizontalHeaderLabels(self.head_list)

for j in self.head_list:

for k in self.data[j].values:

s = QTableWidgetItem(str(k))

s.setTextAlignment(Qt.AlignCenter)

self.sum_list.append(k)

self.table_one.setItem(len(self.sum_list) - 1,int(self.head_list.index(j)), s)

self.sum_list.clear()

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f‘目前有{len(self.data[j].values)}条数据!\n’)

self.table_one.setEditTriggers(QAbstractItemView.NoEditTriggers) # 设置单元格不可编辑

elif self.filename[-4:] == “docx”:

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(“\n导入成功!\n”)

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f‘\n成功导入Word文件!,路径为:{self.filename}\n’)

elif self.filename[-3:] == “pdf”:

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(“\n导入成功!\n”)

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f‘\n成功导入PDF文件!,路径为:{self.filename}\n’)

else:

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(“\n导入失败,请检查是否导入的是后缀为:xlsx,docx,pdf的文件!\n”)

def Queryinfomation(self):

for i in range(self.shape[0]):

for i2 in range(self.shape[1]):

Query = self.table_one.item(i,i2).text()

print(Query)

def compile_True(self,table_view):

self.table_one.setEditTriggers(QAbstractItemView.DoubleClicked)

def compile_False(self,table_view):

self.table_one.setEditTriggers(QAbstractItemView.NoEditTriggers)

def appendinfo(self,table_view):

self.i +=1

self.table_one.setRowCount(self.i)

def dragEnterEvent(self, QDragEnterEvent):

if QDragEnterEvent.mimeData().hasText():

QDragEnterEvent.acceptProposedAction()

def dropEvent(self, QDropEvent):

self.filename = QDropEvent.mimeData().text().replace(‘file:///’, ‘’)

print(self.filename)

self.excal()

def closeEvent(self, event):

reply=QMessageBox.question(self,‘Message’,‘确定要退出吗?’,QMessageBox.Yes,QMessageBox.No)

if reply == QMessageBox.Yes:

sys.exit()

else:

event.ignore()

def pyMuPDF_fitz(self,pdfPath, imagePath):

pdfDoc = fitz.open(pdfPath)

for pg in range(pdfDoc.pageCount):

page = pdfDoc[pg]

rotate = int(0)

zoom_x = 1.33333333

zoom_y = 1.33333333

mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)

pix = page.getPixmap(matrix=mat, alpha=False)

if not os.path.exists(imagePath):

os.makedirs(imagePath)

pix.writePNG(imagePath + ‘/’ + ‘images_%s.png’ % pg)

def Start_Word_PDF(self):

if self.filename[-4:] == “docx” or self.filename[-3:] == “dox”:

reply = QMessageBox.question(win, ‘温馨提示!’, ‘程序开始执行时,因为计算量大可能会导致卡顿,这是正常现象,请不要乱点,请耐心稍等一会儿!!!’, QMessageBox.Yes | QMessageBox.No,(QMessageBox.Yes))

if reply == QMessageBox.Yes:

pass

else:

self.Start_Word_PDF()

Word_pdf_path = self.filename.replace(self.filename[-4:],“pdf”)

word = gencache.EnsureDispatch(‘Word.Application’)

doc = word.Documents.Open(self.filename, ReadOnly=1)

doc.ExportAsFixedFormat(Word_pdf_path,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)

word.Quit(constants.wdDoNotSaveChanges)

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f“\nWord文件已成功转换PDF文件,请前往Word同目录下查看!!!\n\n生成路径为:{Word_pdf_path}\n”)

else:

QMessageBox.question(win, ‘温馨提示!’, ‘请检查是否为Word文件!!’,

QMessageBox.Yes | QMessageBox.No, (QMessageBox.Yes))

def Start_PDF_Image(self):

if self.filename[-4:] == “pdf”:

reply = QMessageBox.question(win, ‘温馨提示!’, ‘程序开始执行时,因为计算量大可能会导致卡顿,这是正常现象,请不要乱点,耐心稍等一会儿!!!’,QMessageBox.Yes | QMessageBox.No, (QMessageBox.Yes))

if reply == QMessageBox.Yes:

pass

else:

self.Start_PDF_Image()

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f‘\n正在转换PDF图片,\n’)

PDF_images_path = os.path.join(os.path.expanduser(“~”), ‘Desktop//PDF_images’)

self.pyMuPDF_fitz(self.filename, PDF_images_path)

self.textedit_one.moveCursor(QTextCursor.End)

self.textedit_one.insertPlainText(f‘\nPDF文件已成功转换图片文件,请前往桌面查看!!!\n\n生成路径为:{PDF_images_path}\n’)

else:

QMessageBox.question(win, ‘温馨提示!’, ‘请检查是否为PDF文件!!’,

QMessageBox.Yes | QMessageBox.No, (QMessageBox.Yes))

if __name__ == ‘__main__’:

app = QApplication(sys.argv)

win = Main_Win()

sys.exit(app.exec_())

展开内容

软件截图

  • LightBlack工具

同类推荐

相关文章

关于QT软件园| 联系方式| 发展历程| 版权声明| 下载帮助(?)| 广告联系

Copyright 2012-2022 QTVCD.COM 【QT软件园】版权所有桂ICP备2023009844号-1

声明:本站所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告