#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. MutationObserver 监听 DOM 树变化

    MutationObserver 是用于代替 MutationEvents 作为观察 DOM 树结构发生变化时,做出相应处理的 API .为什么要使用 MutationObserver 去代替 Mut ...

  2. 从实践出发:微服务布道师告诉你Spring Cloud与Boot他如何选择

    背景 随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. 系统架 ...

  3. Docker容器利用weave实现跨主机互联

    Docker容器利用weave实现跨主机互联 环境: 实现目的:实现主机A中容器1与主机B中容器1的网络互联 主机A步骤: ①下载复制weave二进制执行文件(需要internet)[root@192 ...

  4. 让pomelo可以获取到反向代理websockets的真实用户IP

    /node_modules/pomelo/lib/connectors/hybridsocket.js 找到 var Socket = function(id, socket) { 给remoteAd ...

  5. POJ 3267为什么优先队列超时,DP就能过,难过

    The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11846 Accepted: 5693 Desc ...

  6. 图论--2-SAT--暴力染色法求字典序最小模版

    #include <cstdio> #include <cstring> #include <stack> #include <queue> #incl ...

  7. muduo网络库源码学习————Timestamp.cc

    今天开始学习陈硕先生的muduo网络库,moduo网络库得到很多好评,陈硕先生自己也说核心代码不超过5000行,所以我觉得有必要拿过来好好学习下,学习的时候在源码上面添加一些自己的注释,方便日后理解, ...

  8. 迁移WPF项目到.NET CORE

    综述 .NET CORE 3.0开始,桌面端支持WPF了.很多.NET FRAMEWORK的项目已经跑了一阵子了,不是很有必要支持.NET CORE,不过最近用一个程序,为了贯彻一些C# 8的特性,需 ...

  9. spring Code(spring 核心)

    一.spring的作用 spring 就是为了让我们以后能够做大的项目准备的.spring核心的功能就是一个工厂模式,spring相当于为你的项目专门成立一个一个工厂,这个工厂负责创建对象 ,维护对象 ...

  10. vue-cli3使用全局scss

    在开发项目的时候,经常会出现多个元素样式相同,比如颜色相同.这里就需要我们设置公共样式,方便后期调试 一配置方法 1.在src/assets/styles目录下创建文件variable.scss // ...