如何用wxpython做交互界面_wxpython笔记:wxpython实现HTTP请求交互式工具

该博客介绍了一个基于Python的HTTP请求工具,通过wxPython库构建GUI界面,支持GET和POST请求,具备输入URL、请求参数、请求头等功能,并能实时展示返回的头信息和内容。此外,还包含一个简单的日志查看功能,以及多个页面切换以展示不同内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

importwximportnumpyfrom matplotlib.backends.backend_wxagg importFigureCanvasWxAgg as FigureCanvasfrom matplotlib.figure importFigureimporthttp_resquestimportjsonimportloginclassExample(wx.Frame):def __init__(self, parent, title):

super(Example, self).__init__(parent, title=title)

self.Init_Panel()

self.Init_Box()

self.Init_Left()

self.Init_Center()#将三个垂直盒子添加到垂直盒子

self.Boxh1.Add(self.LeftPanel,proportion = 1, border = 2,flag = wx.ALL |wx.EXPAND)

self.Boxh1.Add(self.CenterPanel, proportion=4, border=2, flag=wx.ALL |wx.EXPAND)#将垂直盒子和主框架关联

self.SetSizer(self.Boxh1)#显示主框架

self.Show()

self.Http=http_resquest.Http_R()#创建三个面板

defInit_Panel(self):

self.LeftPanel=wx.Panel(self)

self.CenterPanel=wx.Panel(self)#创建四个盒子

#两个垂直盒子、两个水平盒子

defInit_Box(self):#两个垂直盒子

self.Boxv1 =wx.BoxSizer(wx.VERTICAL)

self.Boxv2=wx.BoxSizer(wx.VERTICAL)#两个水平盒子

self.Boxh1 =wx.BoxSizer(wx.HORIZONTAL)

self.Boxh2=wx.BoxSizer(wx.HORIZONTAL)

self.Boxh3=wx.BoxSizer(wx.HORIZONTAL)defInit_Left(self):#创建一个wx.StaticBox对象。

#声明一个wx.StaticBoxSizer与创建的wx.StaticBox对象作为其参数。

nm = wx.StaticBox(self.LeftPanel, -1, 'URL')

nmSizer=wx.StaticBoxSizer(nm, wx.VERTICAL)

self.input= wx.TextCtrl(self.LeftPanel, -1, size=(200, 20), color: #000000;">wx.ALIGN_LEFT)

nmSizer.Add(self.input, 1, wx.EXPAND | wx.ALL, 10)

self.Boxh3.Add(nmSizer,5, wx.EXPAND | wx.ALL, 10)

self.button= wx.Button(self.LeftPanel, -1, "请求")

self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)#self.button.SetDefault() # 将按钮设置为默认按钮,不然会是选中状态,边框不同

self.Boxh3.Add( self.button, 0,wx.EXPAND | wx.ALL, 10)

self.Boxv1.Add(self.Boxh3, 0,wx.EXPAND| wx.ALL, 10)#创建一个wx.StaticBox对象。

#声明一个wx.StaticBoxSizer与创建的wx.StaticBox对象作为其参数。

nm1 = wx.StaticBox(self.LeftPanel, -1, '请求方法')

nmSizer1=wx.StaticBoxSizer(nm1, wx.VERTICAL)#创建下拉框

self.languages = ['GET', 'POST', 'HEAD','PUT','ELETE']

self.combo1= wx.ComboBox(self.LeftPanel, choices=self.languages, value=self.languages[0])#在StaticBoxSizer盒子添加下拉框

nmSizer1.Add(self.combo1, 1, wx.EXPAND | wx.ALL, 1)

self.Boxv1.Add(nmSizer1,0, wx.EXPAND| wx.ALL,10)#创建一个wx.StaticBox对象

#声明一个wx.StaticBoxSizer与创建的wx.StaticBox对象作为其参数

nm2 = wx.StaticBox(self.LeftPanel, -1, '请求参数')

nmSizer2=wx.StaticBoxSizer(nm2, wx.VERTICAL)#创建文本域

self.multiText1 = wx.TextCtrl(self.LeftPanel, -1, color: #008000;">#创建一个文本控件

self.multiText1.SetInsertionPoint(0) #设置插入点

nmSizer2.Add(self.multiText1, 1, wx.EXPAND | wx.ALL, 10)#在垂直盒子里添加StaticBoxSizer盒子

self.Boxv1.Add(nmSizer2, 1, wx.EXPAND | wx.ALL, 10)#创建一个wx.StaticBox对象

#声明一个wx.StaticBoxSizer与创建的wx.StaticBox对象作为其参数

nm3 = wx.StaticBox(self.LeftPanel, -1, '请求头')

nmSizer3=wx.StaticBoxSizer(nm3, wx.VERTICAL)#创建文本域

self.multiText2 = wx.TextCtrl(self.LeftPanel, -1, color: #008000;">#创建一个文本控件

self.multiText2.SetInsertionPoint(0) #设置插入点

nmSizer3.Add(self.multiText2, 1, wx.EXPAND | wx.ALL, 10)#在垂直盒子里添加StaticBoxSizer盒子

self.Boxv1.Add(nmSizer3, 1, wx.EXPAND | wx.ALL, 10)#把垂直盒子与LeftPanel关联起来

self.LeftPanel.SetSizer(self.Boxv1)defOnClick(self,event):

url=self.input.GetValue()if url != "":

self.multiText3.Clear()

self.multiText4.Clear()

data=self.multiText1.GetValue()

headers=self.multiText2.GetValue()if self.combo1.GetValue() == "GET":

self.get_data(headers, data, url, self.Http.Get)elif self.combo1.GetValue() == "POST":

self.get_data(headers, data, url, self.Http.Post)else:print("功能占位")defget_data(self,headers,data,url,Callback):if data == "" and headers == "":

headers_data, json_data=Callback(url)elif data != "" and headers == "":

data= data.split("")

data_list= [i.split(":") for i indata]

headers_data, json_data= Callback(url, data=dict(data_list))elif data == "" and headers != "":

headers= headers.split("")

headers_list= [i.split(":") for i inheaders]

headers_data, json_data= Callback(url, header=dict(headers_list))else:

data= data.split("")

data_list= [i.split(":") for i indata]

headers= headers.split("")

headers_list= [i.split(":") for i inheaders]

headers_data, json_data=Callback(url, dict(data_list), dict(headers_list))for key, value inheaders_data.items():

self.multiText3.write(str(key)+ ":" + str(value) + "")for key, value injson_data.items():

self.multiText4.write(str(key)+ ":" + str(value) + "")defInit_Center(self):#创建一个wx.StaticBox对象

#声明一个wx.StaticBoxSizer与创建的wx.StaticBox对象作为其参数

nm1 = wx.StaticBox(self.CenterPanel, -1, '返回头')

nmSizer1=wx.StaticBoxSizer(nm1, wx.VERTICAL)#创建文本域

self.multiText3 = wx.TextCtrl(self.CenterPanel, -1, color: #008000;">#创建一个文本控件

self.multiText3.SetInsertionPoint(0) #设置插入点

nmSizer1.Add(self.multiText3, 1, wx.EXPAND | wx.ALL, 10)#在水平盒子里添加StaticBoxSizer盒子

self.Boxh2.Add(nmSizer1, 1, wx.EXPAND | wx.ALL, 10)#创建一个wx.StaticBox对象

#声明一个wx.StaticBoxSizer与创建的wx.StaticBox对象作为其参数

nm2 = wx.StaticBox(self.CenterPanel, -1, '返回内容')

nmSizer2=wx.StaticBoxSizer(nm2, wx.VERTICAL)#创建文本域

self.multiText4 = wx.TextCtrl(self.CenterPanel, -1, color: #008000;">#创建一个文本控件

self.multiText4.SetInsertionPoint(0) #设置插入点

nmSizer2.Add(self.multiText4, 1, wx.EXPAND | wx.ALL, 10)#在水平盒子里添加StaticBoxSizer盒子

self.Boxh2.Add(nmSizer2, 1, wx.EXPAND | wx.ALL, 10)#在垂直盒子里添加水平盒子

self.Boxv2.Add(self.Boxh2, 1, wx.EXPAND | wx.ALL, 10)#创建notebook

nb = wx.Notebook(self.CenterPanel, color: #000000;">wx.NB_FIXEDWIDTH)

page1 =PageOne(nb)

page2=PageTwo(nb)

page3=PageThree(nb)#在notebook中添加面板,第一个参数是面板,第二个参数是标签

nb.AddPage(page1, "页面内容")

nb.AddPage(page2,"内容查找")

nb.AddPage(page3,"日志")

self.Boxv2.Add(nb,1, wx.EXPAND | wx.ALL, 10)

self.CenterPanel.SetSizer(self.Boxv2)#本质:创建了三个面板###########################使用说明1######################################

classPageOne(wx.Panel):def __init__(self, parent):

wx.Panel.__init__(self, parent)

colour= [(160, 255, 204), (153, 204, 255), (151, 253, 225), ]

self.SetBackgroundColour(colour[0])

self.tx1= wx.StaticText(self, -1, "页面内容", (355, 45),

(100, -1), wx.ALIGN_CENTER)

font= wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD)

self.tx1.SetFont(font)###########################使用说明2######################################

classPageTwo(wx.Panel):def __init__(self, parent):

wx.Panel.__init__(self, parent)

colour= [(160, 255, 204), (153, 204, 255), (151, 253, 225), ]

self.SetBackgroundColour(colour[1])

self.tx2= wx.StaticText(self, -1, "选择检索", (355, 45),

(100, -1), wx.ALIGN_CENTER)

font= wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD)

self.tx2.SetFont(font)###########################使用说明3######################################

classPageThree(wx.Panel):def __init__(self, parent):

wx.Panel.__init__(self, parent)

colour= [(160, 255, 204), (153, 204, 255), (151, 253, 225), ]

self.SetBackgroundColour(colour[2])

self.tx3= wx.StaticText(self, -1, "日志", (355, 45),

(100, -1), wx.ALIGN_CENTER)

font= wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD)

self.tx3.SetFont(font)

app=wx.App()

Example(None, title='HTTP Tool')

app.MainLoop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值