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. 概述在Numpy 1.24版本中,删除了像np.float、np.int 这样的 Python 内置类型的 alias,因此以后在代码
- 本文实例讲述了Python3.5面向对象编程。分享给大家供大家参考,具体如下:1、面向过程与面向对象的比较(1)面向过程编程(procedu
- 第一种是进行多项式拟合,数学上可以证明,任意函数都可以表示为多项式形式。具体示例如下。###拟合年龄import numpy as npim
- 本文实例讲述了Python文件的读写操作。分享给大家供大家参考,具体如下:读写文件读取文件f = open('my_path/my_
- 通过win32 COM接口实现软件的操作本质上来看跟直接操作软件一致,这跟我之前经常用的通过各种扩展的组件或者库实现各种文件的处理有较大的差
- Python装饰器语法糖代码示例####装饰器的固定格式##普通版本def timer(func): def inner(*ar
- 一、问题描述使用idea操作代码进行VCS很是方便,向github进行push和pull操作非常方便,但是,最近频繁提示需要重新输入用户名和
- 1、环境搭建需安装:python3.6Pycharm专业版django 2.2.6mysqlclientpip install django
- 一、项目视图分析通过上图,我们可以看到,一个完整的项目,基本包括三个部分:用户视图层、接口层、数据处理层,其中,用户视图层是用来接收用户的数
- mysqldump工具备份备份整个数据库$> mysqldump -u root -h host -p dbname > bac
- 废话不多说,大家还是直接看代码吧!import pandas as pdfrom matplotlib import pyplot as p
- 大家知道,在js里encodeURIComponent 方法是一个比较常用的编码方法,但因工作需要,在asp里需用到此方法,查了好多资料,没
- 举例: 340%60 = 40 ,怎么来的?340 - 60*5 = 40340 - (比340小的那个可以被60整除的正整数) =. 40
- 如下所示:#coding=utf8import csv import logginglogging.basicConfig(level=lo
- CSS代码更清晰高效的一些经验是许多网页制作者与开发者都关心的问题。但是大概没有什么魔法,可以保证一下就把你的样式表缩小到百分之多少,合理的
- python 中提供一种用于对函数固定属性的函数(与数学上的偏函数不一样)# 通常会返回10进制int('12345') &
- 1.场景,对于colums都相同的dataframe做过滤的时候例如:df1 = DataFrame([['a', 10,
- 一 MySQL WorkbenchMySQL Workbench提供DBAs和developers一个集成工具环境:1)数据库设计和建模2)
- 投影变换(仿射变换)在数学中,线性变换是将一个向量空间映射到另一个向量空间的函数,通常由矩阵实现。如果映射保留向量加法和标量乘法,则映射被认
- 我们先看一下相关数据结构的知识。 在学习线性表的时候,曾有这样一个例题。 已知一个存储整数的顺序表La,试构造顺序表Lb,要求顺序表Lb中只