Python利用wxPython制作股票价格查询工具
作者:winfredzhang 发布时间:2021-11-25 19:09:52
效果如下所示
简介
在当今信息时代,金融市场是一个引人注目的话题。作为普通人,我们也可以通过使用 Python 和 wxPython 库编写一个简单的股票价格查询工具来了解股市的情况。本文将介绍如何使用 Yahoo Finance API、yfinance 模块和 wxPython 库来创建一个简单的 GUI,可以查询全球股市实时价格。我们将会一步步地讲解代码的实现过程,使读者在了解人工智能技术的同时,也能体验到实用工具的编写过程。
源代码
import wx
import yfinance as yf
class NASDAQStockPrice(wx.Frame):
def __init__(self, parent, title):
super(NASDAQStockPrice, self).__init__(parent, title=title, size=(400, 200))
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
self.input_label = wx.StaticText(panel, label="Enter stock symbol (e.g., AAPL):")
hbox1.Add(self.input_label, flag=wx.RIGHT, border=8)
self.input_box = wx.TextCtrl(panel)
hbox1.Add(self.input_box, proportion=1)
vbox.Add(hbox1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
vbox.Add((-1, 10))
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
self.output_label = wx.StaticText(panel, label="")
hbox2.Add(self.output_label, flag=wx.RIGHT, border=8)
vbox.Add(hbox2, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
vbox.Add((-1, 10))
hbox3 = wx.BoxSizer(wx.HORIZONTAL)
self.search_button = wx.Button(panel, label="Search")
hbox3.Add(self.search_button)
self.reset_button = wx.Button(panel, label="Reset")
hbox3.Add(self.reset_button, flag=wx.LEFT, border=5)
vbox.Add(hbox3, flag=wx.ALIGN_RIGHT|wx.RIGHT|wx.BOTTOM, border=10)
self.Bind(wx.EVT_BUTTON, self.on_search, self.search_button)
self.Bind(wx.EVT_BUTTON, self.on_reset, self.reset_button)
panel.SetSizer(vbox)
def on_search(self, event):
try:
stock_symbol = self.input_box.GetValue()
stock = yf.Ticker(stock_symbol)
current_price = stock.info['regularMarketPrice']
self.output_label.SetLabel("{} is currently trading at ${:.2f}".format(stock_symbol.upper(), current_price))
except ValueError:
wx.MessageBox("Please enter a valid stock symbol!", "Error", wx.OK|wx.ICON_ERROR)
def on_reset(self, event):
self.input_box.SetValue("")
self.output_label.SetLabel("")
self.input_box.SetFocus()
if __name__ == '__main__':
app = wx.App()
stock_price = NASDAQStockPrice(None, title="NASDAQ Stock Price Checker")
stock_price.Show()
app.MainLoop()
源代码说明
这段代码使用了 Python 的 wxPython 模块和 Yahoo Finance API 的 yfinance 模块编写了一个简单的 GUI 工具,用于查询纳斯达克股票代码对应的股价。
首先,程序创建了一个名为 NASDAQStockPrice 的类,继承自 wxPython 的 Frame 类,用于创建 GUI 窗口。在 init 方法中,程序创建了一个 Panel,然后使用 wxPython 的 BoxSizer 将窗口分为三个部分。第一部分是用于输入股票代码的输入框,第二部分是用于显示查询结果的标签,第三部分是用于执行查询和重置输入框的按钮。
接着,程序定义了两个方法,用于响应查询和重置按钮的点击事件。on_search 方法中,程序从输入框中获取股票代码,然后使用 yfinance 模块获取对应的股票信息,包括当前股价。最后,程序将查询结果显示在标签中。如果用户输入的股票代码不合法,程序将弹出一个错误对话框。on_reset 方法则用于清空输入框和标签内容,并将光标置于输入框中。
最后,程序使用 if name == 'main' 判断当前脚本是否作为主程序运行。如果是,则创建一个 wxPython 应用程序实例,创建一个 NASDAQStockPrice 对象,并显示出来。最后,启动应用程序的主循环。
这个工具虽然简单,但可以帮助人们了解纳斯达克股票代码对应的股价,尤其是对于经常进行股票交易的人群来说,非常实用。同时,这个工具还展示了 Python 和 wxPython 的 GUI 编程能力,以及 Yahoo Finance API 的数据获取能力。
url: https://query1.finance.yahoo.com/v7/finance/quote?formatted=true&lang=en-US&symbols=GOOG
问题:
Traceback (most recent call last):
File "d:\spiderdocs\stock.py", line 2, in <module>
import yfinance as yf
ModuleNotFoundError: No module named 'yfinance'
解决:
pip install yfinance
来源:https://blog.csdn.net/winniezhang/article/details/129870926
猜你喜欢
- 题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:1、把每层节点的val值用list存好2、把每层节点存好:①计
- 因此,在我接触那么多种语言当中,asp是最不严格的一种,是对程序员要求最低的一种。 昨天测试了asp.net、php和asp的运行速度比较,
- 购物车的设计目标 从程序员的观点来看,购物车是维护购物者商品选购、允许察看、允许修改的一个对象。购物车本身是一个非常简单的程序,但开发者要考
- 引言:以前写的一个批量xls转csv的python简单脚本,用的是python2.7#coding=utf-8import osimport
- 前言这部分已经折腾我两天了,还是没有头绪,可能还会折腾更久,最后在第三天上午解决问题,在一个不起眼的地方被坑了,jQuery加载的问题。会者
- 关于主机名转IP地址只记住两点即可:1、英特网协议一直都是用4字节的IP将包转发给目的地;2、至于主机名是如何转换成IP地址的,这是操作系统
- 求f(x) = sin(x)/x 的不定积分和负无穷到正无穷的定积分sin(x)/x 的不定积分是信号函数sig ,负无穷到正无穷的定积分为
- 在matplotlib中,errorbar方法用于绘制带误差线的折线图,基本用法如下plt.errorbar(x=[1, 2, 3, 4],
- 用VBS语言实现的一个简单网页计算器,功能:可以进行加法、减法、乘法、除法、取反、开根号、及指数运算。虽然简单但是比起windows xp自
- 前言最近在研究怎么对图片资源进行无损压缩,网上也找了一些资料。总而言之,收获不少,所以想对最近的学习做个总结。无损压缩其实是相对而言的,目的
- 我们提到切片的时候,一般想到的大多数是分割列表。其实它还可以对列表进行拼接,想必这点是很多人不知道的,这就是切片的占位符用法。留在原列表中,
- import csvclass HandleCsv: ''' csv文件处理类
- 我们利用linux系统中yum安装Apache+MySQL+PHP是非常的简单哦,只需要几步就可以完成,具体如下:一、脚本YUM源安装:1.
- 代码如下:'其中注释中有 ###的需要用户设置 '其中注释中有 参数传递 ** 的 说明要通过参数 传递。'定义变量
- 前言当我们运行测试函数时,我们希望确保测试函数在运行结束后,可以自己清理掉对环境的影响。这样的话,它们就不会干扰任何其他的测试函数,更不会日
- 这一段CSS代码相当简单,目的就是想用CSS来控制某段文字的显示与隐藏。起初我采用了下面的代码,令人不可思议的是,它们在我的IE6.0上居然
- 前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员。在我们的项目中,我负责的是数据爬取这块,我主要是把对于杨超越 的
- 本文实例为大家分享了python版百度语音识别功能的具体代码,供大家参考,具体内容如下环境:使用的IDE是Pycharm1.新建工程2.配置
- 首先,大家先去下载一份dvbbs.php beta1的代码,解压后先抛开php代码,找出你的mysql手册,如果没有手册那么就直接看下面的实
- python使用utf8编码,mysql也是utf8编码,是什么问题?后来查了一下,使用一个简单的办法即可:vsql = "ins