#!/usr/bin/python3
# -*- coding: utf-8 -*- """
ZetCode PyQt5 tutorial This program creates a quit
button. When we press the button,
the application terminates. Author: Jan Bodnar
Website: zetcode.com
Last edited: January 2018
""" import sys from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QToolTip, QLabel, QLineEdit, QGridLayout
import pandas as pd
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import * class Example(QWidget): def __init__(self):
super().__init__() self.initUI() def hitbtn(self): try:
character2 = "++"
character1 = "|" self.step = 0
self.i = 0
self.pbar.setValue(self.step)
self.tipscontent.setText('正在匹配数据...')
ENCODE = 'utf-8' self.step = self.step + 1
self.pbar.setValue(self.step) patient_detail_data = pd.read_excel(self.patient_detail.text(), encoding=ENCODE)
charge_data = pd.read_excel(self.charge.text(), encoding=ENCODE)
charge_data['line'] = '' charge_data_count = len(charge_data)
patient_detail_data_count = len(patient_detail_data)
# print(charge_data_count)
# print(patient_detail_data_count)
# charge_data_count = 1600
step_length = (patient_detail_data_count * 2 + charge_data_count) / 85 self.step = self.step + 4
self.pbar.setValue(self.step) def change_ProgressBar():
self.i = self.i + 1
# print(self.i)
if self.i >= step_length:
# print("-------+++--",self.i)
self.step = self.step + 1
self.pbar.setValue(self.step)
self.i = 0 def change_charge_str(data_row):
change_ProgressBar() data_row = data_row.astype('str')
line = data_row['f_dcmzid'] + character1 return line # charge_data["line"] = charge_data.apply(lambda data_row: change_str(data_row))
charge_data["line"] = charge_data.apply(lambda data_row: change_charge_str(data_row),
axis=1) # axis=1表示对每一行做相同的操作 charge_data.drop('f_id', axis=1, inplace=True) setdict = {}
for row in charge_data.index:
change_ProgressBar() data_row = charge_data.loc[row]
f_brmzid = str(data_row["f_brmzid"])
line = data_row["line"] if f_brmzid in setdict:
svalue = setdict[f_brmzid]
svalue = svalue + character2 + line setdict[f_brmzid] = svalue
else:
setdict[f_brmzid] = line patient_detail_data[''] = ''
patient_detail_data[''] = '' def change_patient_str(the_id):
change_ProgressBar() the_id = str(the_id)
if the_id in setdict:
svalue = setdict[the_id]
return svalue def change_str3(charge):
change_ProgressBar() charge = str(charge)
if charge.__contains__(character1):
return charge.count(character2) + 1 patient_detail_data[""] = patient_detail_data[''].apply(lambda x: change_patient_str(x))
patient_detail_data[''] = patient_detail_data[''].apply(lambda x, i=0: change_str3(x)) try:
path = self.patient_detail.text()
rindex = path.rfind('/')
path = str(path)[:rindex]
path = path + '/合并表.xlsx' except Exception as e:
print(e)
self.tipscontent.setText(e)
path = '合并表.xlsx' self.tipscontent.setText('正在生成合并表...')
patient_detail_data.to_excel(path, index=False) self.step = 100
self.pbar.setValue(self.step)
self.tipscontent.setText('生成合并表成功') except Exception as e:
print(e)
self.tipscontent.setText("发生错误:" + str(e)) def initUI(self):
conmbinebtn = QPushButton('合并', self)
conmbinebtn.clicked.connect(self.hitbtn)
conmbinebtn.resize(conmbinebtn.sizeHint())
# conmbinebtn.move(500, 50)
QToolTip.setFont(QFont('SansSerif', 12))
# self.setToolTip('This is a <b>QWidget</b> widget')
self.setGeometry(300, 300, 650, 450)
self.setWindowTitle('定制小合并') self.pbar = QProgressBar(self)
self.step = 0 self.tips = QLabel('提示')
self.tipscontent = QLabel('') title = QLabel('详细表')
author = QLabel('费表')
self.patient_detail = QLineEdit()
self.charge = QLineEdit()
grid = QGridLayout()
grid.setSpacing(10) grid.addWidget(title, 1, 0)
grid.addWidget(self.patient_detail, 1, 1)
grid.addWidget(author, 2, 0)
grid.addWidget(self.charge, 2, 1) self.pushButton = QPushButton('打开', self)
self.pushButton.setObjectName("pushButton")
self.pushButton.clicked.connect(self.openfile)
grid.addWidget(self.pushButton, 1, 2) self.pushButton2 = QPushButton('打开', self)
self.pushButton2.setObjectName("pushButton")
self.pushButton2.clicked.connect(self.openfile2)
grid.addWidget(self.pushButton2, 2, 2) grid.addWidget(self.tips, 4, 0)
grid.addWidget(self.tipscontent, 4, 1)
grid.addWidget(conmbinebtn, 4, 2)
grid.addWidget(self.pbar, 3, 1)
self.setLayout(grid)
self.show() def openfile(self):
openfile_name = QFileDialog.getOpenFileName(self, '选择文件', '', 'Excel files(*.xlsx , *.xls)')
add = openfile_name[0]
self.patient_detail.setText(add) def openfile2(self):
openfile_name = QFileDialog.getOpenFileName(self, '选择文件', '', 'Excel files(*.xlsx , *.xls)')
add = openfile_name[0]
self.charge.setText(add) if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_()) # pyinstaller -w custom_combine.py --hidden-import=pandas._libs.tslibs.timedeltas
这是个可以是在 win 下生成exe目录,后面hidden是为了解决打包支持pandas的问题 # try:
# self.tipscontent.setText('正在匹配数据...')
# ENCODE = 'utf-8'
# patient_detail_data = pd.read_excel(self.patient_detail.text(), encoding=ENCODE)
# charge_data = pd.read_excel(self.charge.text(), encoding=ENCODE)
#
# # patient_detail_data.merge(charge_data, left_on='lkey', right_on='rkey', how='outer')
# # result = pd.concat([patient_detail_data, charge_data], axis=1, join='right')
# # result = pd.merge(patient_detail_data, charge_data,how='right',left_on=['门诊号'], right_on=['f_brmzid'])
# result = pd.merge(patient_detail_data, charge_data,how='outer',left_on=['门诊号'], right_on=['f_brmzid'])
#
# try:
# path = self.patient_detail.text()
# rindex = path.rfind('/')
# path = str(path)[:rindex]
# path = path + '/合并表2.xlsx'
#
# except Exception as e:
# print(e)
# self.tipscontent.setText(e)
# path = '合并表2.xlsx'
#
# self.tipscontent.setText('正在生成合并表...')
# result.to_excel(path)
# self.tipscontent.setText('生成合并表成功')
# except Exception as e:
# print(e)
# self.tipscontent.setText("发生错误:" + str(e))

pyqt5 做的小程序,可以用来UI做个小demo的更多相关文章

  1. 微信小程序来了,小程序都能做些什么

    2017年的微信大动作就是微信小程序了,到底小程序都能做些什么?这是很多人关注的热点,小程序开发对企业又有什么帮助呢?下面让厦门微信小程序开发公司来为你就分析下.       微信小程序与APP的关系 ...

  2. 基于spring-boot的社区社交微信小程序,适合做脚手架、二次开发

    基于spring-boot的社区社交微信小程序,适合做脚手架.二次开发 代码地址如下:http://www.demodashi.com/demo/13867.html 1 概述 笔者做的一个后端基于s ...

  3. 微信小程序 springboot nginx 做图片存储 上传 浏览

    微信小程序前端-springboot后端-nginx图片存储 前言 本人小白一名,这是第一次学习微信小程序,特此做个记录. 首先准备nginx做图片存储 选择一个地址存放图片 #我的地址 [root@ ...

  4. uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤

    uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤 这里以vant-weapp为例 uni-app官方文档介绍引入组件的方法 1. 新建相关目录 根目录下创建 wxcomponen ...

  5. 微信小程序之提高应用速度小技巧

    作者:vicyao, 腾讯web前端开发 高级工程师商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/294.htm ...

  6. 微信小程序怎样提高应用速度小技巧

    作者:vicyao, 腾讯web前端开发 高级工程师商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/294.htm ...

  7. 微信小程序全选,微信小程序checkbox,微信小程序购物车

    微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组  1.标题titl ...

  8. 微信小程序之微信登陆 —— 微信小程序教程系列(20)

    简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...

  9. 微信小程序开发——前端如何区分小程序运行环境

    前言: 之前用vue做h5项目,对于接口请求,都是根据前端访问域名来判断运行环境,然后自动适配对应的服务器地址的.这样的好处就是在开发.测试及发布上线全程都不需要手动去改接口请求地址,只要提前配置好就 ...

  10. 小程序内嵌H5——判断小程序环境的坑

    现在各种小程序风靡,这边H5的需求还没有搞定,产品又要求做小程序版本,做可以,关键是618前上线,我-- whatever,618要做推广,日期订了,剩下的就只能是排期,定方案,尽可能完成. 最后和产 ...

随机推荐

  1. 【ACM】nyoj_6_喷水装置(1)_201308150853

    喷水装置(一)时间限制:3000 ms  |  内存限制:65535 KB 难度:3描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心 ...

  2. js 推断字符串是否包括某字符串

    var Cts = "bblText"; if(Cts.indexOf("Text") > 0 ) { alert('Cts中包括Text字符串'); } ...

  3. Oracle EBS LOV速度优化

    一.现象 本文地址:http://blog.csdn.net/sunansheng/article/details/50952758 当我们的EBS LOV的SQL写得比較复杂.或者数据量比較多时,L ...

  4. [Python]通过websocket与jsclient通信

    站点大多使用HTTP协议通信.而HTTP是无连接的协议.仅仅有client请求时,server端才干发出对应的应答.HTTP请求的包也比較大,假设仅仅是非常小的数据通信.开销过大.于是,我们能够使用w ...

  5. [WebView学习之二]:使用Web Apps 支持不同分辨率屏

    上一篇我们学习了(1.[WebView学习之中的一个]:Web Apps简单介绍),今天我们来继续学习. (博客地址:http://blog.csdn.net/developer_jiangqq),转 ...

  6. Linux线程池在server上简单应用

    一.问题描写叙述 如今以C/S架构为例.client向server端发送要查找的数字,server端启动线程中的线程进行对应的查询.将查询结果显示出来. 二.实现方案 1. 整个project以cli ...

  7. jQuery事件整理回想

    一.事件 1.载入DOM $(document).ready() 这个第一节里具体介绍了 2.事件绑定 jQuery定义了bind()方法作为统一的接口.用来为每个匹配元素绑定事件处理程序. 其基本的 ...

  8. 一个jeecg整合activiti的学习样例,源代码下载

    社区成员:刘京华採用技术:jeecg+ activiti源代码下载地址:http://pan.baidu.com/s/1dDxOHrV 截图演示:  2.jpg (71.81 KB, 下载次数: 0) ...

  9. Django网站管理--ModelAdmin

    class AuthorAdmin(admin.ModelAdmin): list_display=('name', 'age', 'sex') #指定要显示的字段 search_fields=('n ...

  10. Codeforces Round #281 (Div. 2) D. Vasya and Chess 博弈

    D. Vasya and Chess   Vasya decided to learn to play chess. Classic chess doesn't seem interesting to ...