安装布局工具(wxFormBuilder_v3.5.1-rc1.exe)
安装第三方库
pip install pyinstaller
pip install wxpython
工具安装
1、安装图像工具png2ico:绿色版解压即可
2、安装打包工具upx391w:绿色版解压即可
一、布局工具(wxFormBuilder)
第一步:准备一个窗体【forms 可以理解为html文件】
1、点击wxformbuilder上方的标签“forms”
2、并点击标签下方的第一个类似窗体的图标“Frame”
3、下面就会出现一个窗体
4、说明:但是现在还不能直接往窗体上添加各种控件。咱们还需要给窗体添加布局器BoxSizer
第二步:添加布局器【可以理解为html标签】
1、点击wxformbuilder上方的标签“Layout(倒数第3个)
2、并点击标签下方的图标“wxGridBagSizer”(顺数第5个)
3、添加一个只有以列控件布局的布局器
4、说明:窗体上并没有什么变化。但是窗口左边的目录树有变化了,窗体下布局器多了一个红色边框
第三步:放置控件【可以理解为标签元素】
控件介绍(左起)
1、wxbutton(按钮)
2、wxBitmapButton(问号提示按钮)
3、wxStaticText(文本)
4、wxTextCtrl(文本输入框)
1、选中wxTextCtrl元素设置默认值
2、value写入默认值
3、控制自动换行:
wxTextCtrl---style---勾选wx.TE_MULTILINE
5、wxComboBox(下拉选择框)
6、wxChoice(下拉选择框)
1、选择下来元素
2、添加下拉选项
wxChoice---choices---点右边---添加选项
3、selection:通过索引指定默认选项值,0表示选择第一个选项
7、wxListBox(大文本框)
8、wxListCtrl(大下拉选择框)
第四步:调整空间位置
控件属性说明
1、name:实体对象的变量名
2、label:GUI页面显示的名称
3、控件尺寸属性
1、wxWindow---size:Width:宽度,height:高度
4、控件位置属性
1、gbsizeritem--row,column:行,列起始值为0
1、将png2ico.ip解压到D:\png2ico
2、将要转化的png,切成如下规格的.png图片 248*248 128*128 64*64 48*48 32*35 16*16
3、将这些.png图片全放到D:\png2ico目录
4、在命令行,进入D:\png2ico
5、再在命令行执行命令:png2ico qq.ico logo248.png logo128.png logo64.png logo48.png logo32.png logo16.png
6、执行完,程序会在D:\png2ico目录生成qq.ico
"""
pyinstaller 打包
1、安装upx391w(解压即可)
2、在upx391w里面新建文件夹,将需要打包的.py文件放进去
3、cmd进入该目录执行命令:pyinstaller -wF dFraud.py realName.py start.py --upx-dir upx391w
4、upx391w\build01\dist 目录下会生成.exe文件
pyinstaller -wF --icon=D:\20170508\upx391w\build01\qq.ico dFraud.py realName.py start.py --upx-dir upx391w
"""
1、把需要打包的py文件放到这个目录下,新建一个文件夹里面放需要打包的py文件
2、cmd 到这个新建的文件夹下
3、执行命令
如果是在build目录下就不需要加F参数
pyinstaller -wF --icon=qq.ico demo01.py --upx-dir upx391w
在外面目录
pyinstaller -wF --icon=D:\20170508\upx391w\build01\qq.ico dFraud.py realName.py start.py --upx-dir upx391w
1、文本框赋值
self.m_textCtrl104.SetValue(u'哇靠,发布借款报错了')
2、获取文本框内容
value = self.m_textCtrl1.GetValue()
3、获取下拉框的值
value = self.m_choice1.GetCurrentSelection()
4、事件函数语法
def test_fun(self,event):
#event:接收self.Bind方法的event参数,名字可以随便写
self.m_textCtrl32.SetValue('嗯,测试成功')
5、事件绑定
"""
handler:绑定函数
source:绑定按钮
"""
self.Bind(event=wx.EVT_BUTTON,handler=self.button1,source=self.m_button1)
"""
event:接收self.Bind方法的event参数,名字可以随便写
value = self.m_textCtrl1.GetValue() 获取文本内容
value = self.m_choice1.GetCurrentSelection() 获取下拉框的值
self.m_textCtrl2.SetValue(response.json()) # 设置文本框的值
"""
import requests
import wx
import wx.xrc
import ast
import json
class MyFrame1(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
size=wx.Size(900, 560), style=wx.DEFAULT_FRAME_STYLE | wx.MINIMIZE_BOX)
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
gbSizer1 = wx.GridBagSizer(0, 0)
gbSizer1.SetFlexibleDirection(wx.BOTH)
gbSizer1.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
self.m_staticText1 = wx.StaticText(self, wx.ID_ANY, u"接口地址", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText1.Wrap(-1)
gbSizer1.Add(self.m_staticText1, wx.GBPosition(0, 0), wx.GBSpan(1, 1), wx.ALL, 5)
self.m_textCtrl1 = wx.TextCtrl(self, wx.ID_ANY, u"http://httpbin.org/post", wx.DefaultPosition,
wx.Size(300, -1), 0)
gbSizer1.Add(self.m_textCtrl1, wx.GBPosition(0, 1), wx.GBSpan(1, 1), wx.ALL, 5)
self.m_staticText2 = wx.StaticText(self, wx.ID_ANY, u"请求参数", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText2.Wrap(-1)
gbSizer1.Add(self.m_staticText2, wx.GBPosition(1, 0), wx.GBSpan(1, 1), wx.ALL, 5)
self.m_textCtrl2 = wx.TextCtrl(self, wx.ID_ANY, u"{\n\"user_name\":\"admin\",\n\"passwd\":\"123456\"\n}",
wx.DefaultPosition, wx.Size(300, 100), wx.TE_MULTILINE)
gbSizer1.Add(self.m_textCtrl2, wx.GBPosition(1, 1), wx.GBSpan(1, 1), wx.ALL, 5)
self.m_staticText3 = wx.StaticText(self, wx.ID_ANY, u"请求类型", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText3.Wrap(-1)
gbSizer1.Add(self.m_staticText3, wx.GBPosition(2, 0), wx.GBSpan(1, 1), wx.ALL, 5)
m_choice1Choices = [u"POST", u"GET"]
self.m_choice1 = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_choice1Choices, 0)
self.m_choice1.SetSelection(0)
gbSizer1.Add(self.m_choice1, wx.GBPosition(2, 1), wx.GBSpan(1, 1), wx.ALL, 5)
self.m_staticText4 = wx.StaticText(self, wx.ID_ANY, u"响应结果", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText4.Wrap(-1)
gbSizer1.Add(self.m_staticText4, wx.GBPosition(3, 0), wx.GBSpan(1, 1), wx.ALL, 5)
self.m_textCtrl3 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(300, 300), wx.TE_MULTILINE)
gbSizer1.Add(self.m_textCtrl3, wx.GBPosition(3, 1), wx.GBSpan(1, 1), wx.ALL, 5)
self.m_button1 = wx.Button(self, wx.ID_ANY, u"发送请求", wx.DefaultPosition, wx.DefaultSize, 0)
gbSizer1.Add(self.m_button1, wx.GBPosition(0, 2), wx.GBSpan(1, 1), wx.ALL, 5)
self.SetSizer(gbSizer1)
self.Layout()
self.Centre(wx.BOTH)
#绑定事件
self.Bind(event=wx.EVT_BUTTON, handler=self.test_fun, source=self.m_button1)
def __del__(self):
pass
def test_fun(self,event):
try:
url = self.m_textCtrl1.GetValue()
data = self.m_textCtrl2.GetValue()
method_num = self.m_choice1.GetCurrentSelection()
method = "POST" if method_num == 0 else "GET"
response = requests.request(method,url,json=ast.literal_eval(data))
self.m_textCtrl3.SetValue(json.dumps(response.json(),indent=4)) # 设置文本框的值
except Exception as e:
self.m_textCtrl3.SetValue(e)
if __name__ == '__main__':
app = wx.App(False)
test = MyFrame1(None) # 创建窗口
test.Centre() # 窗口居中
test.Show() # 显示窗口
app.MainLoop() # 运行程序