窦文涛,炙,万宝路-婆媳关系处理网,我国最复杂的关系,分析及案例分享

admin 2019-05-20 阅读:286

说起Python的图形用户界面 (GUI, Graphical User Interface)规划,就让人想到python的许多GUI库,比方规范库tkinter和第三方库PyQt5,wxpython等等,在这里我引荐运用PyQt5,由于它有个东西叫Qt Designer,能够直接手动设置界面,把控件拖放到指定方位去。而且QT支撑的控件比规范库tkinter多,而且还比它规划的GUI美观,所以我用上PyQt5后就激烈的喜爱了它。


**欢迎参加新手技术交流基地:**1004391443 群里有大牛回答,有资源,有源码,学不学的会就看你了!

Qt Designer翻开后界面

Pyqt5装置用pip装置即可,QtDesigner装备和装置详见:

https://blog.csdn.net/hubz131/article/details/79352443

接下来介绍一下摘要算法,音讯摘要算法的主要特征是加密进程不需求密钥,而且通过加密的数据无法被解密,只要输入相同的明文数据通过相同的音讯摘要算法才干得到相同的密文,比方如下代码:

>>> import hashlib as h
>>> str1='你打球像蔡徐坤'
>>>bytestring=str1.encode('UTF-8') #生成bytes类型
>>> m=h.md5() #发作MD5目标
>>> m.update(bytestring) #把发作的bytes参加到m目标中
>>> m.hexdigest() #生成摘要
'edea833bc2b9c8d69cffdc2a93151df1'

只要2个bytes类型的字符串彻底相同,他们生成的摘要才彻底一致,略微改动一处当地出产的摘要就彻底不一样,比方

字符串(utf-8编码)

摘要md5

音讯摘要算法的主要特征是加密进程不需求密钥

e408fc959a50d64ebac335841f98ed88

音讯摘要算法的主要特征是加密进程不需求密钥?

1a9890a26144bc94bee18a53a7c83faa

Python的规范库hashlib有许多这样的加密算法,除了经典的MD5还有sha1,sha224,sha512等。

当Qt Desiger装备好后,咱们翻开它



生成一个空白的界面



按如下规划:



将目标Form的windowTitle特点改为摘要算法



组合框内容如下,留意第一个是默许





最终保存,生成ui文件,假如你运用pycharm的话,最好将ui文件保存到pycharm的文件夹内,然后这样



就在同一个文件夹下,生成同名的.py文件了!

翻开那个同名的py文件,咱们看到生成了一个名叫Ui_Form的类和它的两个办法setupUi和retranslateUi,这两个办法在做什么估量看一下咱们都懂了,咱们不用了解pyqt5的代码,首先在首行导入sys库hashlib库(简写为h),在同名的py文件结尾,加上

app = QtWidgets.QApplication(sys.argv)
mainWindow = QtWidgets.QMainWindow()
ui = Ui_Form()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())

然后点击运转,刚刚做出来的界面就栩栩如生的展示了出来,便是点击按钮没反应



咱们需求给按钮添加一个信号槽(当点击事情发作之后,比方,按钮检测到自己被点击了一下,它就会宣布一个信号(signal)。这种宣布是没有意图的,相似播送。假如有目标对这个信号感兴趣,它就会运用衔接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也便是说,当信号宣布时,被衔接的槽函数会主动被回调。这就相似观察者形式:当发作了感兴趣的事情,某一个操作就会被主动触发。)

咱们给Ui_Form的类添加一个办法,叫做jisuan

sf={'md5':h.md5,'sha1':h.sha1,'sha224':h.sha224,'sha256':h.sha256,
'sha384':h.sha384,'sha512':h.sha512,'sha3_224':h.sha3_224,
'sha3_256':h.sha3_256,'sha3_384':h.sha3_384,'sha3_512':h.sha3_512}
def jisuan(self):
zhaiya=self.comboBox.currentText()
bianma = self.comboBox_2.currentText()
string=self.plainTextEdit.toPlainText()
fun=sf[zhaiya]
sha=fun(string.encode(bianma))
zfc=sha.hexdigest()
self.plainTextEdit_2.setPlainText(zfc)

sf是外部变量,界说一个字典,字典的键值对应字符串和相应的函数,这样咱们就界说好了一个这样的函数,最终便是,将这函数和按钮点击链接起来,在setupUi办法最结尾加上

 self.pushButton.clicked.connect(self.jisuan)

即可。

点击运转,如下,很优异。



完好代码如下:

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '摘要算法.ui'
#
# Created by: PyQt5 UI code generator 5.11.2
#
# WARNING! All changes made in this file will be lost!
importsys
fromPyQt5importQtCore,QtGui, QtWidgets
importhashlibash
sf={'md5':h.md5,'sha1':h.sha1,'sha224':h.sha224,'sha256':h.sha256,
'sha384':h.sha384,'sha512':h.sha512,'sha3_224':h.sha3_224,
'sha3_256':h.sha3_256,'sha3_384':h.sha3_384,'sha3_512':h.sha3_512}
classUi_Form(object):
def setupUi(self,Form):
Form.setObjectName("Form")
Form.resize(367,300)
self.plainTextEdit= QtWidgets.QPlainTextEdit(Form)
self.plainTextEdit.setGeometry(QtCore.QRect(10,20,351,71))
self.plainTextEdit.setObjectName("plainTextEdit")
self.label= QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(130,0,101,16))
self.label.setObjectName("label")
self.label_2= QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(10,100,54,21))
self.label_2.setObjectName("label_2")
self.comboBox= QtWidgets.QComboBox(Form)
self.comboBox.setGeometry(QtCore.QRect(60,100,71,22))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.pushButton= QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(260,100,81,31))
self.pushButton.setObjectName("pushButton")
self.groupBox= QtWidgets.QGroupBox(Form)
self.groupBox.setGeometry(QtCore.QRect(0,130,361,161))
self.groupBox.setObjectName("groupBox")
self.plainTextEdit_2= QtWidgets.QPlainTextEdit(self.groupBox)
self.plainTextEdit_2.setGeometry(QtCore.QRect(10,20,351,131))
self.plainTextEdit_2.setObjectName("plainTextEdit_2")
self.label_3= QtWidgets.QLabel(Form)
self.label_3.setGeometry(QtCore.QRect(140,101,31,21))
self.label_3.setObjectName("label_3")
self.comboBox_2= QtWidgets.QComboBox(Form)
self.comboBox_2.setGeometry(QtCore.QRect(170,100,71,22))
self.comboBox_2.setObjectName("comboBox_2")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
self.pushButton.clicked.connect(self.jisuan)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self,Form):
_translate =QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form","摘要算法"))
self.label.setText(_translate("Form","需求摘要的字符串"))
self.label_2.setText(_translate("Form","摘要算法"))
self.comboBox.setItemText(0,_translate("Form","md5"))
self.comboBox.setItemText(1,_translate("Form","sha1"))
self.comboBox.setItemText(2,_translate("Form","sha1"))
self.comboBox.setItemText(3,_translate("Form","sha224"))
self.comboBox.setItemText(4,_translate("Form","sha256"))
self.comboBox.setItemText(5,_translate("Form","sha384"))
self.comboBox.setItemText(6,_translate("Form","sha512"))
self.comboBox.setItemText(7,_translate("Form","sha3_224"))
self.comboBox.setItemText(8,_translate("Form","sha3_256"))
self.comboBox.setItemText(9,_translate("Form","sha3_384"))
self.comboBox.setItemText(10,_translate("Form","sha3_512"))
self.pushButton.setText(_translate("Form","核算"))
self.groupBox.setTitle(_translate("Form","成果"))
self.label_3.setText(_translate("Form","编码"))
self.comboBox_2.setItemText(0,_translate("Form","UTF-8"))
self.comboBox_2.setItemText(1,_translate("Form","GBK"))
def jisuan(self):
zhaiya=self.comboBox.currentText()
bianma = self.comboBox_2.currentText()
string=self.plainTextEdit.toPlainText()
fun=sf[zhaiya]
sha=fun(string.encode(bianma))
zfc=sha.hexdigest()
self.plainTextEdit_2.setPlainText(zfc)
app = QtWidgets.QApplication(sys.argv)
mainWindow = QtWidgets.QMainWindow()
ui = Ui_Form()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())