#coding=utf-8
'''
Created on 2018年11月2日 @author: yanerfree
''' import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from future.types.newint import long #测试调试输出开关,正式发布需调整为False
mytest = True
mytest = False class WindowDemo(QWidget):
def __init__(self):
super().__init__()
self.initUI() def initUI(self):
glayout = QGridLayout()
glayout.setSpacing(10) lable1 = QLabel("请输入第 一 个序列号 :")
lable2 = QLabel("需要生成的序列号个数 : ")
lable3 = QLabel("生 成 的 序 列 号 :")
#lable3.setAlignment(Qt.AlignCenter) self.lineEdit1 = QLineEdit()
self.lineEdit2 = QLineEdit()
self.textEdit = QTextEdit() self.btn1 = QPushButton("开始")
self.btn1.clicked.connect(self.start) glayout.addWidget(lable1,1,1)
glayout.addWidget(lable2,2,1)
glayout.addWidget(lable3,3,1)
glayout.addWidget(self.btn1,9,2) glayout.addWidget(self.lineEdit1,1,2,1,3)
glayout.addWidget(self.lineEdit2,2,2,1,3)
glayout.addWidget(self.textEdit,3,2,5,3) '''
fromlayout.addRow(labl1, self.lineEdit1)
fromlayout.addRow(labl2, self.lineEdit2)
fromlayout.addRow(labl3, self.textEdit)
fromlayout.addWidget(self.btn1)
''' self.setLayout(glayout)
self.setWindowTitle("GenerateSerialNum")
#self.resize(400, 100)
self.setGeometry(100,60,500,500)
#self.setWindowIcon(QIcon(r"../photo/pikachu.png"))#设置窗体图标 def getparam(self):
#print("get params")
self.param1 = self.lineEdit1.text()
self.param2 = self.lineEdit2.text() def start(self):
self.btn1.setCheckable(False)
self.getparam()
self.left = ""
self.right = ""
index = self.getNumindex()
if index == -1:
return
if mytest: print("获取的index:",index)#ASDCXSW12345678000
self.left = str(self.param1)[0:index]
self.right = str(self.param1)[index:]
if mytest: print("self.left:",self.left)
if mytest: print("self.right:",self.right)
numlist = self.generateNum()
if numlist == -1:
return
content=""
for item in numlist:
content += str(item) self.textEdit.setPlainText(content)
self.btn1.setCheckable(True) def generateNum(self):
numlist = []
if len(self.param2)==0:
if mytest: print("请输入需要生成的序列号个数")
self.showmsg("warning","请输入需要生成的序列号个数")
return -1
if not str(self.param2).isdigit():
if mytest: print("请正确输入需要生成的序列号个数,必须是整数")
self.showmsg("warning","请正确输入需要生成的序列号个数,必须是整数")
return -1
if mytest: print("self.parm2:",int(self.param2))
tmp = 0
for i in range(int(self.param2)):
tmp = long(self.right) + i
#print("tmp:",tmp)
#tmp ="%s%d"%(self.left,tmp)
tmp =self.left + str(tmp) + "\r\n"
numlist.append(tmp) return numlist def getNumindex(self):
l = len(self.param1)
if mytest: print("输入的第一个序列号长度为:",l)
if not str(self.param1).isalnum():#必须是数字和字母的混合
if mytest: print("输入的序列号不正确,请重新输入")
self.showmsg("warning","输入的序列号不正确,请重新输入")
return -1
if str(self.param1).isalpha():#如果全是字母
if mytest: print("输入的序列号全是字母,请重新输入")
self.showmsg("warning","输入的序列号全是字母,请重新输入")
return -1
if str(self.param1)[-1].isalpha():#如果是字母
if mytest: print(str(self.param1)[-1],"输入的序列号最后一位必须是数字,请重新输入")
self.showmsg("warning","输入的序列号最后一位必须是数字,请重新输入")
return -1
index = 0
for i in range(l):
if self.param1[i].isalpha():
if mytest: print(self.param1[i],"是字母")
#self.left = self.left + self.param1[i]
else:
if mytest: print(self.param1[i],"是数字")
if self.param1[i:].isdigit():#判断是否数字
if mytest: print(self.param1[i:],"全是数字")
index =i
break
#self.right = self.param1[i]
else:
#self.left = self.left + self.param1[i]
if mytest: print(self.param1[i:],"不全是数字")
index += 1
return (index) def showmsg(self,t,msg):
if(t == "warning"):
# QMessageBox.warning(self,"Warining","没有需要保存的内容",QMessageBox.Ok)
QMessageBox.warning(self,"Warining",msg,QMessageBox.Ok)
if(t == "info"):
QMessageBox.information(self,"info",msg,QMessageBox.Yes,QMessageBox.Yes) if __name__ == '__main__':
# 每一个pyqt程序中都需要有一个QApplication对象,sys.argv是一个命令行参数列表
app = QApplication(sys.argv)
#实例化窗口
demo = WindowDemo()
#显示
demo.show()
#进入程序的主循环,遇到退出情况,终止程序
sys.exit(app.exec_())

打包成可执行程序

pip install PyInstaller,安装PyInstaller

pyinstaller -F -w F:\exercise\20181025\GenerateSerialNum.py

Pyqt5_实例1的更多相关文章

  1. pyqt5_实例:修改xml文件中节点值

    需求: 将类似如下xml文件的externalid节点值修改成不重复的值 实现该功能的代码Func.py: #coding=utf-8 ''' Created on 2019年10月15日 @auth ...

  2. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  3. js-静态、原型、实例属性

    本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...

  4. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  5. EntityFramework Core 1.1是如何创建DbContext实例的呢?

    前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...

  6. redis集成到Springmvc中及使用实例

    redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...

  7. 流程开发Activiti 与SpringMVC整合实例

    流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...

  8. UWP开发之Template10实践:本地文件与照相机文件操作的MVVM实例(图文付原代码)

    前面[UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理]章节已经提到过Template10,为了认识MvvmLight的区别特做了此实例. 原代码地址:ht ...

  9. echarts+php+mysql 绘图实例

    最近在学习php+mysql,因为之前画图表都是直接在echart的实例demo中修改数据,便想着两相结合练习一下,通过ajax调用后台数据画图表. 我使用的是echart3,相比较第二版,echar ...

随机推荐

  1. bdc抢夺域控

    1.运行CMD2.在 ntdsutil :提示符下输入 ntdsutil3.在 ntdsutil :提示符下输入 roles4.在 fsmo maintenance:提示符下输入 connection ...

  2. Redis(三):多机数据库的实现

    复制 在Redis中,用户可以通过SLAVEOF命令或是slaveof选项设置服务器的主从关系,从(SLAVE)服务器会复制主(Master)服务器. 旧版复制功能实现(2.8以前) 旧版复制功能主要 ...

  3. 《数据分析实战:基于EXCEL和SPSS系列工具的实践》一1.4 数据分析的流程

    本节书摘来华章计算机<数据分析实战:基于EXCEL和SPSS系列工具的实践>一书中的第1章 ,第1.4节,纪贺元 著 更多章节内容可以访问云栖社区"华章计算机"公众号查 ...

  4. Centos 6.5升级gcc : 源码安装 + rpm安装

    1. 前言 采用Centos 6.5默认的gcc版本为4.4.7,不支持c++ 11,需要升级: 首先想到用yum命令:执行yum update gcc-c++或yum update g++ 显示没有 ...

  5. 题目分享k

    题意:开关问题,有n只奶牛朝前或朝后,要使这n只奶牛全部朝前,每次能且必须翻转k只奶牛,求在最少翻转次数下的最小的k值,n≤5000 分析:n²暴力直接水过......枚举k值,对于每个k值因为最左边 ...

  6. socket编程之时间回射服务器

    使用到的函数: // 返回值:读到的字节数,若已到文件尾,返回0:若出错,返回-1 ssize_t read(int fd, void *buf, size_t nbytes); // 返回值:若成功 ...

  7. Navicat12.1系列安装,破解以及破解navicat报错的解决方案

    由于上课的需要,我们必须自己下载并安装 Navicat Premium 12,虽然安装过程很简单,但是安装后的navicat只能试用,并没有永久激活,然而我还想永久使用,所以就各种百度,因为不断地遇到 ...

  8. rsync客户端一键安装rsync脚本(源码)

    客户端 read -np "请输入源码rsync的URL 地址 包名(以空格为分隔符,别带/):" URL DZ BM yum remove -y rsync &>& ...

  9. STM32 TIM1高级定时器配置快速入门

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 重点内容 时基单元 计 ...

  10. SpringBoot + SpringCloud的爬坑之旅

    1,application.yaml中配置没有生效问题解决 如果配置文件确认没有错误但是没有生效首先是要到编译目录去查看是否被编译过去了,如果没有,请先将项目clean在重启 但是idea启动项目时也 ...