通常文本框是GUI中最常见的控件,不仅可以显示文本,还能收集用户使用键盘键入的文本内容。
在wxPython中文本框为wx.TextCtrl类,该类可以显示和编辑文本。
TextCtrl类的构造函数形式如下 :
wx.TextCtrl(self, parent=None, id=None, value=None, pos=None, size=None, style=0, validator=None, name=None):
接下来我们在量化小工具的显示区面板创建一个文本框,如下所示:
self.StockPanel = wx.Panel(self, -1)
self.BasicInput = wx.TextCtrl(self.StockPanel, -1, "股票基础信息数据:\n", style=wx.TE_MULTILINE | wx.TE_READONLY) # 多行|只读
vboxnetB = wx.BoxSizer(wx.VERTICAL)#纵向box
vboxnetB.Add(self.BasicInput,proportion=1,flag=wx.EXPAND|wx.ALL,border=2)
self.StockPanel.SetSizer(vboxnetB)
self.HBoxPanel = wx.BoxSizer(wx.HORIZONTAL)
self.HBoxPanel.Add(self.ParaPanel,proportion = 1.5, border = 2,flag = wx.EXPAND|wx.ALL)
self.HBoxPanel.Add(self.StockPanel,proportion = 8, border = 2,flag = wx.EXPAND|wx.ALL )
self.HBoxPanel.Add(self.CtrlPanel,proportion = 0.5, border = 2,flag = wx.EXPAND|wx.ALL )
self.HBoxPanel.Add(toolbar, proportion=0.5, border=2, flag=wx.EXPAND | wx.ALL)
self.SetSizer(self.HBoxPanel)
显示效果如下所示:
此处style为wx.TE_MULTILINE和wx.TE_READONLY,实际上style为接受样式参数,如下所示:
下一步我们在本文框对象self.BasicInput 中显示tushare获取到的股票基本信息列表,如下所示:
self.BasicInput.AppendText("序号 " + "TS代码 " + "股票代码 " + "股票名称 "+ "所在地域 " + "所属行业 "+ "上市日期 "+"\n")
for index, row in df_basic.iterrows():
temp_str = str(index)+" "
for n in range(len(row)):
temp_str += str(row[n])+" "
self.BasicInput.AppendText(temp_str+"\n")
显示效果如下所示:
此处显示文本使用了AppendText()方法,实际上wx.TextCtrl类还支持很多文本处理的方法,如下所示:
掌握了TextCtrl文本框的使用方法之后,可以相应地显示股票的财务数据、基本面数据、上市新股信息、新闻数据等等,辅助我们进行股票分析。于是我们可以使用相似的方法显示tushare获取到的快讯新闻数据,如下所示:
df_news = pro.news(src='sina', start_date='2020-01-20 09:00:00', end_date='2020-01-21 10:10:00')
self.BasicInput = wx.TextCtrl(self.StockPanel, -1, "股票快讯新闻数据:\n", style=wx.TE_MULTILINE | wx.TE_READONLY) # 多行|只读
self.BasicInput.AppendText("事件 " + "新闻 "+"\n")
for index, row in df_news.iterrows():
temp_str = str(row[0])+" "+str(row[1])+" "
self.BasicInput.AppendText(temp_str+"\n")
显示效果如下所示:
也可以显示tushare获取到的新股上市列表数据,包括申购代码、上网发行日期、上市日期、发行总量(万股)、上网发行总量(万股)、发行价格、市盈率、个人申购上限(万股)、募集资金(亿元)、中签率等,如下所示:
df_share = pro.new_share(start_date='20180901', end_date='20200118')
self.BasicInput = wx.TextCtrl(self.StockPanel, -1, "IPO新股列表数据:\n", style=wx.TE_MULTILINE | wx.TE_READONLY) # 多行|只读
self.BasicInput.AppendText("序号 "+"TS股票代码 "+"申购代码 "+"股票名称 "+"上网发行日期 " +
"上市日期 "+"发行总量(万股) "+"上网发行总量(万股) "+"发行价格 "+
"市盈率 "+"个人申购上限(万股) "+"募集资金(亿元) "+"中签率 "+"\n")
for index, row in df_share.iterrows():
temp_str = str(index)+" "
for n in range(len(row)):
temp_str += str(row[n])+" "
self.BasicInput.AppendText(temp_str+"\n")
显示效果如下所示:
另外,TextCtrl框中输入文字时可引发相应的事件,事件绑定器会负责处理相关事件,如下所示:
作者简介:
1-畅销书《Python股票量化交易从入门到实践》作者
2-日常运营公众号《元宵大师带你用Python量化交易》
3-CSDN视频课程《Python金融数据分析入门到实战》讲师