您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 本溪分类信息网,免费分类信息发布

利用pyqt来编写属于自己的python Gui界面

2022/1/15 2:46:59发布96次查看
本人是做接口测试的,而很多接口现在对于安全方面有了很大的重视,所以往往在接口层上做了一些加密,比如md5、aes、sha之类的加密,而每次加密,都是自己利用python编写脚本而生成sign值,这往往对于自己在工具效率上无法提高,所以就产生了自己编写一个简单的加密+请求接口的小工具的想法。
因为本人现在主要是以python为主,所以在选择的时候,就从这方面入手。许多人在学习如何创建一个 gui 应用的时候都感到十分的困难。其中最重要的原因是,他们不知道应该从何下手。大多数的教程都只有文字,但事实上仅仅依靠文字很难学会 gui 编程,因为 gui 应用大多数都是基于视觉上的。
本篇文章,主要是分享下自己在编写这个小工具过程中的心得。做出来的效果如下:
工具效果图
做出来的虽然有点简陋,但是可以做为借鉴、完善,接下来就是工具制作的方法:
1、gui界面的制作
首先要先安装python环境,然后再eric6,涉及到这些环境的安装可以自行百度去寻找方法,在此不会涉及到环境安装的方法,环境安装完成后,打开qt designer(在eric6根目录下点击eric6.pyc或者在python根目录下点击打开eric.bat):
qt designer
打开qt designer后,选择main window,点击创建:
创建main window
创建好你的mainwindow后:
mainwindow
在mainwindow界面的右边qobject,那就是定义这个对象的名字的地方。这个名字将是我们通过 python 代码调用到这个对象的变量名,所以请尽量取一个有意义的名称。
设计完成你的界面后,点击保存,将会生成得到xxx.ui文件,这个文件可以通过cmd打开ui文件所在的路径,然后通过pyuic4 xx.ui > xx.py 可以得到xx.py文件:
生成的py文件
2、编写代码
qt 代码是面向对象的,并且简单易学。所有我们添加的组件都是一个对象,并且都拥有自己的方法比如toplaintext()(用来读取输入框中的值)。这让它使用起来非常方便。
在你编写代码之前,你必须要使用一些函数来进行配置。可以通过官方的例程(以及网上的一些教程)中总结出了这一小段代码来进行配置。
这些代码非常有用,每当你想要创建一个新的 pyqt 项目的时候,就在这段代码的基础上添加你自己的代码吧。
这段代码如下:
import sysfrom pyqt4 import qtcore, qtgui, uicqtcreatorfile = # enter file here.ui_mainwindow, qtbaseclass = uic.loaduitype(qtcreatorfile)class myapp(qtgui.qmainwindow, ui_mainwindow):def __init__(self):qtgui.qmainwindow.__init__(self)ui_mainwindow.__init__(self)self.setupui(self)if __name__ == __main__:app = qtgui.qapplication(sys.argv)window = myapp()window.show()sys.exit(app.exec_())
其中需要注意的是:
qtcreatorfile = # enter file here.
你需要在这里填入你先前创建的文件的地址,即就是之前生成的ui文件。这个文件将会被内置的函数载入:
ui_mainwindow, qtbaseclass = uic.loaduitype(qtcreatorfile)
再看下这段代码:
if __name__ == __main__:app = qtgui.qapplication(sys.argv)window = myapp()window.show()sys.exit(app.exec_())
这段主程序创建了一个新的 qt gui 应用。,每个 qt 应用都可以通过命令行进行配置,所以必须传入sys.argv 参数。不过现在我们用不到这个。最后,我们创建了一个myapp类,这个类继承于 qt 库并且调用了父类的初始化函数:
class myapp(qtgui.qmainwindow, ui_mainwindow):def __init__(self):qtgui.qmainwindow.__init__(self)ui_mainwindow.__init__(self)self.setupui(self)
你不一定非得要了解这些代码的细节。你只需要在它的基础上继续开发就好了。
但是最好不需要这样导入ui文件为前提下进行开发,而是直接生成py文件基础上进行开发,因为你后续还需要生成exe文件,至于怎样实现你的功能,这部分代码可以看看自己的需求了,怎么写就怎么写了:
#此部分为生成的py文件代码self.label_21.settext(_translate(mainwindow, sign:, none))self.label_22.settext(_translate(mainwindow, bizcontent:, none))self.request_button_form.settext(_translate(mainwindow, request, none))self.timestamp_select_3.settext(_translate(mainwindow, 11位时间戳, none))self.timestamp_select_4.settext(_translate(mainwindow, 年-月-日 时:分:秒, none))self.label_23.settext(_translate(mainwindow, appsecret:, none))self.appsecret_input_form.sethtml(_translate(mainwindow, , none))self.label_24.settext(_translate(mainwindow, result-output, none))self.tabwidget.settabtext(self.tabwidget.indexof(self.tab_2), _translate(mainwindow, form模式, none))#此部分为自己实现组件功能的代码# aes加密class prpcrypt():def __init__(self, key,iv):self.key = keyself.iv=ivself.mode = aes.mode_cbcdef encrypt(self, text):''' 根据key长度必须是16(aes-128),24(aes-192),32(aes-256)位 不足位数的,可以使用标准的pkcs填充字符 '''data =text+(aes.block_size - len(text) % aes.block_size) * chr(aes.block_size - len(text) % aes.block_size)cryptor = aes.new(self.key, self.mode, self.iv)self.ciphertext = cryptor.encrypt(data)return base64.b64encode(self.ciphertext)class myapp(qtgui.qmainwindow, ui_mainwindow):def __init__(self):qtgui.qmainwindow.__init__(self)ui_mainwindow.__init__(self)self.setupui(self)self.request_button.clicked.connect(self.calculatetax)def calculatetax(self):url = str(self.url_input.toplaintext()).strip(' ')appkey=(str(self.appkey_input.toplaintext())).strip(' ')# 获取content-tpye值,获取当前下拉框combobox的值和当前的索引content_type_index = self.content_type_select.currentindex() # 获取当前选择的索引值content_type_value = str(self.content_type_select.currenttext()) # 获取当前选择的文本,qstring类型print content_type_indexprint content_type_value
以上为部分代码,只提供为参考
self.request_button.clicked.connect(self.calculatetax)
这段代码有什么用?还记得我们把按钮命名为了calc_tax_button 吗?(这是这个按钮对象的名字,不是按钮上显示的提示字符串。)clicked 是一个内置的函数,当有按钮被点击的时候它会被自动调用(很神奇吧)。所有的 qt 组件都有特定的函数,你可以通过 google 来查看详细。这段代码的最后部分是connect(self.calculatetax)。这意味着这个按钮会被链接到一个叫做self.calculatetax 的函数,这样以后每当用户按下这个按钮的时候,这段代码都会被调用。
下面介绍一些获取控件的值和给控件赋默认值的方法:
mainwindow.lineedit.settext((uzg 额外abc)) #给输入框赋值
mainwindow.textedit.setplaintext('') #给texedit赋值
mainwindowbobox.setcurrentindex(2) #给下拉框赋值
mainwindow.checkbox.setchecked(1) #给复选框checkbox赋值,可以填写true或者false 或0 ,1
print unicode(qstring(mainwindow.lineedit.text())) #获取输入框的值
unicode(qstring(mainwindow.textedit.toplaintext()))#获textedit的值
print unicode(qstring(mainwindowbobox.currenttext()))#获取下拉框的值
print mainwindowbobox.currentindex() #获取下拉框的index
if mainwindow.checkbox.ischecked()==true 获取复选框checkbox的值
好了,关于pyqt这块的,先写到这里,我也是刚刚利用这个春节的时间来琢磨完成的,不过还是需要再深入学习。
本溪分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录