PyQt实现一个简单的License系统(一)
2017-06-01 14:35
330 查看
本文主要介绍如何用PyQt实现一个License系统。事实上,这个“License系统”在之前已经用Qt实现过了,因此对于“需求分析”、“软件设计”等内容不再重复介绍。博客链接:
http://blog.csdn.net/sagittarius_warrior/article/details/53501282
本人最近在学习python,特别是PyQt,于是选择用python来重新实现一下这个软件。本文要重点介绍的是:
1)PyQt、WinPython的安装、配置。
2)如何用PyQt编译QDesigner生成的*.ui文件。
3)如何用python创建一个GUI。
4)python如何调C DLL库。
5)ctypes中类型处理。
6)如何用VS调试被python调用的DLL库。
7)如何设置VS为python的IDE。
8)如何在C++中嵌入python。
9)如何构建和优化高效python代码。
本文实际上就是以这个“License系统的实现”为例,演示上述知识点,鉴于篇幅,可能要分割成多篇博文。
一、PyQt的安装、配置
关于PyQt的安装,参考“Read Create Simple GUI Applications”这篇博文就够了。
https://leanpub.com/create-simple-gui-applications/read#leanpub-auto-qt-and-pyqt
该博文给出了Windows、Linux和MaxOs系统中安装PyQt的详细教程。我分别在Ubuntu16.4和Win10下试过了,都能安装。
1,Linux(Ubuntu)
Ubuntu16.4是自带Python的,不过需要注意的是:它里面既嵌有python2,也嵌有python3。默认情况下,你在“Terminal”中输入“python”,它打开的是python2.7;只有在输入“python3”时,才执行python3。这一点特别需要注意。如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/8a550f43a7db9ae1ec617f8aecdecfd5)
如上图所示,我的Ubuntu系统中已经安装了有python了,我只需要在“terminal”中输入如下命令:
然后根据提示,选择“Yes”即可安装完成。
2,WinPython
上述博文也给出了在Windows系统下的PyQt安装方法,不过,我后来发现Windows下直接安装“WinPython”更好,它集成了包括PyQt在内的一些常用的python库,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/5018dda4137edb712693346a90a5cede)
WinPython的安装就比较简单了,直接到官网:https://winpython.github.io/
下载指定版本的WinPython,解压到某个指定目录下即可。它实际上是一个免安装版的,在开始菜单里是看不到的,卸载的时候直接删除文件夹即可。
解压好后,需要做的是:配置环境变量。
右键“我的电脑” -> “属性” -> “高级” -> “环境变量” -> “Path”
加上:
1)python.exe所在的目录路径;
2)scripts的路径;
配置好后,打开cmd,键入命令进行测试:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/dba9d0f5b2fee6c8c713fb9dcfa8c5cf)
如上图所示,表示安装配置成功。
二、PyQt编译QDesigner生成的*.ui文件
QDesigner是一个图形化的界面设计软件,设计好界面后,保存的文件为“*.ui”,它实际是一个xml文件。通过PyQt可以将该ui文件编译成一个“*.py”文件。
对于“LicenseSystem”工程,我之前已经设计好了界面,参考我之前的博文
http://blog.csdn.net/sagittarius_warrior/article/details/53501282
取出那个“mainwindow.ui”文件,放到一个目录下,然后进行如下操作:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/7f1024181f3f0c272f2658b61c217a13)
如上图所示:实际就是用WinPython目录下的“pyuic5.bat”将ui文件编译成py文件。
生成的mainwindow.py文件代码如下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.8.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(890, 614)
MainWindow.setMinimumSize(QtCore.QSize(800, 600))
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralWidget)
self.gridLayout.setContentsMargins(11, 11, 11, 11)
self.gridLayout.setSpacing(6)
self.gridLayout.setObjectName("gridLayout")
self.splitter = QtWidgets.QSplitter(self.centralWidget)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setHandleWidth(60)
self.splitter.setObjectName("splitter")
self.layoutWidget = QtWidgets.QWidget(self.splitter)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(11, 11, 11, 11)
self.verticalLayout.setSpacing(6)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout.setSpacing(6)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_1 = QtWidgets.QLabel(self.layoutWidget)
self.label_1.setMinimumSize(QtCore.QSize(80, 0))
self.label_1.setAlignment(QtCore.Qt.AlignCenter)
self.label_1.setObjectName("label_1")
self.horizontalLayout.addWidget(self.label_1)
self.lineEdit_1 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_1.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_1.setObjectName("lineEdit_1")
self.horizontalLayout.addWidget(self.lineEdit_1)
self.verticalLayout.addLayout(self.horizontalLayout)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_2.setSpacing(6)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_2 = QtWidgets.QLabel(self.layoutWidget)
self.label_2.setMinimumSize(QtCore.QSize(80, 0))
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.horizontalLayout_2.addWidget(self.label_2)
self.lineEdit_2 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_2.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_2.setObjectName("lineEdit_2")
self.horizontalLayout_2.addWidget(self.lineEdit_2)
self.verticalLayout.addLayout(self.horizontalLayout_2)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_3.setSpacing(6)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_3 = QtWidgets.QLabel(self.layoutWidget)
self.label_3.setMinimumSize(QtCore.QSize(80, 0))
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.horizontalLayout_3.addWidget(self.label_3)
self.lineEdit_3 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_3.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_3.setObjectName("lineEdit_3")
self.horizontalLayout_3.addWidget(self.lineEdit_3)
self.verticalLayout.addLayout(self.horizontalLayout_3)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_4.setSpacing(6)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_4 = QtWidgets.QLabel(self.layoutWidget)
self.label_4.setMinimumSize(QtCore.QSize(80, 0))
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.horizontalLayout_4.addWidget(self.label_4)
self.lineEdit_4 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_4.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_4.setObjectName("lineEdit_4")
self.horizontalLayout_4.addWidget(self.lineEdit_4)
self.verticalLayout.addLayout(self.horizontalLayout_4)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_5.setSpacing(6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_5 = QtWidgets.QLabel(self.layoutWidget)
self.label_5.setMinimumSize(QtCore.QSize(80, 0))
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.horizontalLayout_5.addWidget(self.label_5)
self.lineEdit_5 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_5.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_5.setObjectName("lineEdit_5")
self.horizontalLayout_5.addWidget(self.lineEdit_5)
self.verticalLayout.addLayout(self.horizontalLayout_5)
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_6.setSpacing(6)
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.label_6 = QtWidgets.QLabel(self.layoutWidget)
self.label_6.setMinimumSize(QtCore.QSize(80, 0))
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
self.label_6.setObjectName("label_6")
self.horizontalLayout_6.addWidget(self.label_6)
self.lineEdit_6 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_6.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_6.setObjectName("lineEdit_6")
self.horizontalLayout_6.addWidget(self.lineEdit_6)
self.verticalLayout.addLayout(self.horizontalLayout_6)
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
self.horizontalLayout_7.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_7.setSpacing(6)
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.label_7 = QtWidgets.QLabel(self.layoutWidget)
self.label_7.setMinimumSize(QtCore.QSize(80, 0))
self.label_7.setAlignment(QtCore.Qt.AlignCenter)
self.label_7.setObjectName("label_7")
self.horizontalLayout_7.addWidget(self.label_7)
self.lineEdit_7 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_7.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_7.setObjectName("lineEdit_7")
self.horizontalLayout_7.addWidget(self.lineEdit_7)
self.verticalLayout.addLayout(self.horizontalLayout_7)
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
self.horizontalLayout_8.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_8.setSpacing(6)
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.label_8 = QtWidgets.QLabel(self.layoutWidget)
self.label_8.setMinimumSize(QtCore.QSize(80, 0))
self.label_8.setAlignment(QtCore.Qt.AlignCenter)
self.label_8.setObjectName("label_8")
self.horizontalLayout_8.addWidget(self.label_8)
self.lineEdit_8 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_8.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_8.setObjectName("lineEdit_8")
self.horizontalLayout_8.addWidget(self.lineEdit_8)
self.verticalLayout.addLayout(self.horizontalLayout_8)
self.layoutWidget1 = QtWidgets.QWidget(self.splitter)
self.layoutWidget1.setObjectName("layoutWidget1")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
self.verticalLayout_2.setContentsMargins(11, 11, 11, 11)
self.verticalLayout_2.setSpacing(6)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
self.horizontalLayout_9.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_9.setSpacing(6)
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
self.btnPreview = QtWidgets.QPushButton(self.layoutWidget1)
self.btnPreview.setObjectName("btnPreview")
self.horizontalLayout_9.addWidget(self.btnPreview)
spacerItem = QtWidgets.QSpacerItem(308, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_9.addItem(spacerItem)
self.verticalLayout_2.addLayout(self.horizontalLayout_9)
self.plaintext = QtWidgets.QTextBrowser(self.layoutWidget1)
self.plaintext.setObjectName("plaintext")
self.verticalLayout_2.addWidget(self.plaintext)
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
self.horizontalLayout_10.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_10.setSpacing(6)
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
self.btnEncrypt = QtWidgets.QPushButton(self.layoutWidget1)
self.btnEncrypt.setObjectName("btnEncrypt")
self.horizontalLayout_10.addWidget(self.btnEncrypt)
spacerItem1 = QtWidgets.QSpacerItem(308, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_10.addItem(spacerItem1)
self.verticalLayout_2.addLayout(self.horizontalLayout_10)
self.ciphertext = QtWidgets.QTextBrowser(self.layoutWidget1)
self.ciphertext.setObjectName("ciphertext")
self.verticalLayout_2.addWidget(self.ciphertext)
self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
self.horizontalLayout_11.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_11.setSpacing(6)
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
self.btnDecrypt = QtWidgets.QPushButton(self.layoutWidget1)
self.btnDecrypt.setObjectName("btnDecrypt")
self.horizontalLayout_11.addWidget(self.btnDecrypt)
spacerItem2 = QtWidgets.QSpacerItem(308, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_11.addItem(spacerItem2)
self.verticalLayout_2.addLayout(self.horizontalLayout_11)
self.recovertext = QtWidgets.QTextBrowser(self.layoutWidget1)
self.recovertext.setObjectName("recovertext")
self.verticalLayout_2.addWidget(self.recovertext)
self.gridLayout.addWidget(self.splitter, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 890, 23))
self.menuBar.setObjectName("menuBar")
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtWidgets.QToolBar(MainWindow)
self.mainToolBar.setObjectName("mainToolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtWidgets.QStatusBar(MainWindow)
self.statusBar.setObjectName("statusBar")
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "LicenseSystem"))
self.label_1.setText(_translate("MainWindow", "Company:"))
self.lineEdit_1.setText(_translate("MainWindow", "Softrument"))
self.label_2.setText(_translate("MainWindow", "Product:"))
self.lineEdit_2.setText(_translate("MainWindow", "WIFI Instrument"))
self.label_3.setText(_translate("MainWindow", "SerialNumber:"))
self.lineEdit_3.setText(_translate("MainWindow", "0123456789"))
self.label_4.setText(_translate("MainWindow", "Privilege:"))
self.lineEdit_4.setText(_translate("MainWindow", "0"))
self.label_5.setText(_translate("MainWindow", "Modules:"))
self.lineEdit_5.setText(_translate("MainWindow", "3"))
self.label_6.setText(_translate("MainWindow", "StartDate:"))
self.label_7.setText(_translate("MainWindow", "DueDate:"))
self.label_8.setText(_translate("MainWindow", "CurrentDate:"))
self.btnPreview.setText(_translate("MainWindow", "Preview"))
self.btnEncrypt.setText(_translate("MainWindow", "Encrypt"))
self.btnDecrypt.setText(_translate("MainWindow", "Decrypt"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
在cmd中键入:“python mainwindow.py”,即可看到如下界面:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/ad21c2b01c78eeb336c0ad75bc053822)
至此,一个基本的GUI已经创建出来了。
本部分主要参考博文:
http://projects.skylogic.ca/blog/how-to-install-pyqt5-and-build-your-first-gui-in-python-3-4/
http://blog.csdn.net/sagittarius_warrior/article/details/53501282
本人最近在学习python,特别是PyQt,于是选择用python来重新实现一下这个软件。本文要重点介绍的是:
1)PyQt、WinPython的安装、配置。
2)如何用PyQt编译QDesigner生成的*.ui文件。
3)如何用python创建一个GUI。
4)python如何调C DLL库。
5)ctypes中类型处理。
6)如何用VS调试被python调用的DLL库。
7)如何设置VS为python的IDE。
8)如何在C++中嵌入python。
9)如何构建和优化高效python代码。
本文实际上就是以这个“License系统的实现”为例,演示上述知识点,鉴于篇幅,可能要分割成多篇博文。
一、PyQt的安装、配置
关于PyQt的安装,参考“Read Create Simple GUI Applications”这篇博文就够了。
https://leanpub.com/create-simple-gui-applications/read#leanpub-auto-qt-and-pyqt
该博文给出了Windows、Linux和MaxOs系统中安装PyQt的详细教程。我分别在Ubuntu16.4和Win10下试过了,都能安装。
1,Linux(Ubuntu)
Ubuntu16.4是自带Python的,不过需要注意的是:它里面既嵌有python2,也嵌有python3。默认情况下,你在“Terminal”中输入“python”,它打开的是python2.7;只有在输入“python3”时,才执行python3。这一点特别需要注意。如下图所示:
如上图所示,我的Ubuntu系统中已经安装了有python了,我只需要在“terminal”中输入如下命令:
apt
-
get
install
python3
-
pyqt5
然后根据提示,选择“Yes”即可安装完成。
2,WinPython
上述博文也给出了在Windows系统下的PyQt安装方法,不过,我后来发现Windows下直接安装“WinPython”更好,它集成了包括PyQt在内的一些常用的python库,如下:
WinPython的安装就比较简单了,直接到官网:https://winpython.github.io/
下载指定版本的WinPython,解压到某个指定目录下即可。它实际上是一个免安装版的,在开始菜单里是看不到的,卸载的时候直接删除文件夹即可。
解压好后,需要做的是:配置环境变量。
右键“我的电脑” -> “属性” -> “高级” -> “环境变量” -> “Path”
加上:
1)python.exe所在的目录路径;
2)scripts的路径;
配置好后,打开cmd,键入命令进行测试:
如上图所示,表示安装配置成功。
二、PyQt编译QDesigner生成的*.ui文件
QDesigner是一个图形化的界面设计软件,设计好界面后,保存的文件为“*.ui”,它实际是一个xml文件。通过PyQt可以将该ui文件编译成一个“*.py”文件。
对于“LicenseSystem”工程,我之前已经设计好了界面,参考我之前的博文
http://blog.csdn.net/sagittarius_warrior/article/details/53501282
取出那个“mainwindow.ui”文件,放到一个目录下,然后进行如下操作:
如上图所示:实际就是用WinPython目录下的“pyuic5.bat”将ui文件编译成py文件。
生成的mainwindow.py文件代码如下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.8.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(890, 614)
MainWindow.setMinimumSize(QtCore.QSize(800, 600))
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralWidget)
self.gridLayout.setContentsMargins(11, 11, 11, 11)
self.gridLayout.setSpacing(6)
self.gridLayout.setObjectName("gridLayout")
self.splitter = QtWidgets.QSplitter(self.centralWidget)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setHandleWidth(60)
self.splitter.setObjectName("splitter")
self.layoutWidget = QtWidgets.QWidget(self.splitter)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(11, 11, 11, 11)
self.verticalLayout.setSpacing(6)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout.setSpacing(6)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_1 = QtWidgets.QLabel(self.layoutWidget)
self.label_1.setMinimumSize(QtCore.QSize(80, 0))
self.label_1.setAlignment(QtCore.Qt.AlignCenter)
self.label_1.setObjectName("label_1")
self.horizontalLayout.addWidget(self.label_1)
self.lineEdit_1 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_1.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_1.setObjectName("lineEdit_1")
self.horizontalLayout.addWidget(self.lineEdit_1)
self.verticalLayout.addLayout(self.horizontalLayout)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_2.setSpacing(6)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_2 = QtWidgets.QLabel(self.layoutWidget)
self.label_2.setMinimumSize(QtCore.QSize(80, 0))
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.horizontalLayout_2.addWidget(self.label_2)
self.lineEdit_2 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_2.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_2.setObjectName("lineEdit_2")
self.horizontalLayout_2.addWidget(self.lineEdit_2)
self.verticalLayout.addLayout(self.horizontalLayout_2)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_3.setSpacing(6)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_3 = QtWidgets.QLabel(self.layoutWidget)
self.label_3.setMinimumSize(QtCore.QSize(80, 0))
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.horizontalLayout_3.addWidget(self.label_3)
self.lineEdit_3 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_3.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_3.setObjectName("lineEdit_3")
self.horizontalLayout_3.addWidget(self.lineEdit_3)
self.verticalLayout.addLayout(self.horizontalLayout_3)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_4.setSpacing(6)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_4 = QtWidgets.QLabel(self.layoutWidget)
self.label_4.setMinimumSize(QtCore.QSize(80, 0))
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.horizontalLayout_4.addWidget(self.label_4)
self.lineEdit_4 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_4.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_4.setObjectName("lineEdit_4")
self.horizontalLayout_4.addWidget(self.lineEdit_4)
self.verticalLayout.addLayout(self.horizontalLayout_4)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_5.setSpacing(6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_5 = QtWidgets.QLabel(self.layoutWidget)
self.label_5.setMinimumSize(QtCore.QSize(80, 0))
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.horizontalLayout_5.addWidget(self.label_5)
self.lineEdit_5 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_5.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_5.setObjectName("lineEdit_5")
self.horizontalLayout_5.addWidget(self.lineEdit_5)
self.verticalLayout.addLayout(self.horizontalLayout_5)
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_6.setSpacing(6)
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.label_6 = QtWidgets.QLabel(self.layoutWidget)
self.label_6.setMinimumSize(QtCore.QSize(80, 0))
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
self.label_6.setObjectName("label_6")
self.horizontalLayout_6.addWidget(self.label_6)
self.lineEdit_6 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_6.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_6.setObjectName("lineEdit_6")
self.horizontalLayout_6.addWidget(self.lineEdit_6)
self.verticalLayout.addLayout(self.horizontalLayout_6)
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
self.horizontalLayout_7.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_7.setSpacing(6)
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.label_7 = QtWidgets.QLabel(self.layoutWidget)
self.label_7.setMinimumSize(QtCore.QSize(80, 0))
self.label_7.setAlignment(QtCore.Qt.AlignCenter)
self.label_7.setObjectName("label_7")
self.horizontalLayout_7.addWidget(self.label_7)
self.lineEdit_7 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_7.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_7.setObjectName("lineEdit_7")
self.horizontalLayout_7.addWidget(self.lineEdit_7)
self.verticalLayout.addLayout(self.horizontalLayout_7)
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
self.horizontalLayout_8.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_8.setSpacing(6)
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.label_8 = QtWidgets.QLabel(self.layoutWidget)
self.label_8.setMinimumSize(QtCore.QSize(80, 0))
self.label_8.setAlignment(QtCore.Qt.AlignCenter)
self.label_8.setObjectName("label_8")
self.horizontalLayout_8.addWidget(self.label_8)
self.lineEdit_8 = QtWidgets.QLineEdit(self.layoutWidget)
self.lineEdit_8.setMinimumSize(QtCore.QSize(200, 0))
self.lineEdit_8.setObjectName("lineEdit_8")
self.horizontalLayout_8.addWidget(self.lineEdit_8)
self.verticalLayout.addLayout(self.horizontalLayout_8)
self.layoutWidget1 = QtWidgets.QWidget(self.splitter)
self.layoutWidget1.setObjectName("layoutWidget1")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
self.verticalLayout_2.setContentsMargins(11, 11, 11, 11)
self.verticalLayout_2.setSpacing(6)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
self.horizontalLayout_9.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_9.setSpacing(6)
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
self.btnPreview = QtWidgets.QPushButton(self.layoutWidget1)
self.btnPreview.setObjectName("btnPreview")
self.horizontalLayout_9.addWidget(self.btnPreview)
spacerItem = QtWidgets.QSpacerItem(308, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_9.addItem(spacerItem)
self.verticalLayout_2.addLayout(self.horizontalLayout_9)
self.plaintext = QtWidgets.QTextBrowser(self.layoutWidget1)
self.plaintext.setObjectName("plaintext")
self.verticalLayout_2.addWidget(self.plaintext)
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
self.horizontalLayout_10.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_10.setSpacing(6)
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
self.btnEncrypt = QtWidgets.QPushButton(self.layoutWidget1)
self.btnEncrypt.setObjectName("btnEncrypt")
self.horizontalLayout_10.addWidget(self.btnEncrypt)
spacerItem1 = QtWidgets.QSpacerItem(308, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_10.addItem(spacerItem1)
self.verticalLayout_2.addLayout(self.horizontalLayout_10)
self.ciphertext = QtWidgets.QTextBrowser(self.layoutWidget1)
self.ciphertext.setObjectName("ciphertext")
self.verticalLayout_2.addWidget(self.ciphertext)
self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
self.horizontalLayout_11.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_11.setSpacing(6)
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
self.btnDecrypt = QtWidgets.QPushButton(self.layoutWidget1)
self.btnDecrypt.setObjectName("btnDecrypt")
self.horizontalLayout_11.addWidget(self.btnDecrypt)
spacerItem2 = QtWidgets.QSpacerItem(308, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_11.addItem(spacerItem2)
self.verticalLayout_2.addLayout(self.horizontalLayout_11)
self.recovertext = QtWidgets.QTextBrowser(self.layoutWidget1)
self.recovertext.setObjectName("recovertext")
self.verticalLayout_2.addWidget(self.recovertext)
self.gridLayout.addWidget(self.splitter, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 890, 23))
self.menuBar.setObjectName("menuBar")
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtWidgets.QToolBar(MainWindow)
self.mainToolBar.setObjectName("mainToolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtWidgets.QStatusBar(MainWindow)
self.statusBar.setObjectName("statusBar")
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "LicenseSystem"))
self.label_1.setText(_translate("MainWindow", "Company:"))
self.lineEdit_1.setText(_translate("MainWindow", "Softrument"))
self.label_2.setText(_translate("MainWindow", "Product:"))
self.lineEdit_2.setText(_translate("MainWindow", "WIFI Instrument"))
self.label_3.setText(_translate("MainWindow", "SerialNumber:"))
self.lineEdit_3.setText(_translate("MainWindow", "0123456789"))
self.label_4.setText(_translate("MainWindow", "Privilege:"))
self.lineEdit_4.setText(_translate("MainWindow", "0"))
self.label_5.setText(_translate("MainWindow", "Modules:"))
self.lineEdit_5.setText(_translate("MainWindow", "3"))
self.label_6.setText(_translate("MainWindow", "StartDate:"))
self.label_7.setText(_translate("MainWindow", "DueDate:"))
self.label_8.setText(_translate("MainWindow", "CurrentDate:"))
self.btnPreview.setText(_translate("MainWindow", "Preview"))
self.btnEncrypt.setText(_translate("MainWindow", "Encrypt"))
self.btnDecrypt.setText(_translate("MainWindow", "Decrypt"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
在cmd中键入:“python mainwindow.py”,即可看到如下界面:
至此,一个基本的GUI已经创建出来了。
本部分主要参考博文:
http://projects.skylogic.ca/blog/how-to-install-pyqt5-and-build-your-first-gui-in-python-3-4/
相关文章推荐
- PyQt实现一个简单的License系统(二)
- 一个简单文件系统的实现
- 一个简单的JavaScript数据缓存系统实现代码
- 一个简单文件系统的实现
- 实现了一个简单的key-value存储系统
- 用vba实现一个简单的对账系统(针对供应商的货物对账单)
- 利用page rank,hits算法实现的一个简单的文本摘要系统
- PyQt4实现一个简单的notepad
- 实现一个简单的银行储蓄系统,承担活期用户的存款和取款业务 (只是初步的写出)
- 【1】实现一个简单的linux系统引导程序
- 一个简单的粒子系统的实现
- 一个简单的本地化资源管理系统--具体实现
- 一个简单仓库管理系统的设计与实现--需求篇
- 实现一个简单的脚本系统
- 一个简单的JavaScript数据缓存系统实现代码
- JSP+MySql实现的一个简单投票系统
- JSP+MySql实现的一个简单投票系统
- 使用ICE实现一个简单的文件系统
- 用vba实现一个简单的工资系统
- 吴昊品工程级别软件项目 Round 5 —— 用JavaScript实现一个简单的注册登录系统