Python利用wxPython制作股票价格查询工具

 更新时间:2023年05月06日 11:42:07   作者:winfredzhang  
在当今信息时代,金融市场是一个引人注目的话题。本文将介绍如何使用 Yahoo Finance API、yfinance 模块和 wxPython 库来创建一个简单的全球股市实时价格查询工具,希望大家能够喜欢

效果如下所示

简介

在当今信息时代,金融市场是一个引人注目的话题。作为普通人,我们也可以通过使用 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

到此这篇关于Python利用wxPython制作股票价格查询工具的文章就介绍到这了,更多相关Python wxPython股票价格查询工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python+selenium 实现扫码免密登录示例代码

    python+selenium 实现扫码免密登录示例代码

    这篇文章主要介绍了python+selenium 实现扫码免密登录,首先扫码登录获取cookies保存到本地未后面免密登录做准备,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • python向已存在的excel中新增表,不覆盖原数据的实例

    python向已存在的excel中新增表,不覆盖原数据的实例

    下面小编就为大家分享一篇python向已存在的excel中新增表,不覆盖原数据的实例,具有很好超参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • jupyter notebook参数化运行python方式

    jupyter notebook参数化运行python方式

    这篇文章主要介绍了jupyter notebook参数化运行python方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python3变量与基本数据类型用法实例分析

    Python3变量与基本数据类型用法实例分析

    这篇文章主要介绍了Python3变量与基本数据类型用法,结合实例形式分析了Python3保留字、标识符、变量、基本数据类型及相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • Python文本文件的合并操作方法代码实例

    Python文本文件的合并操作方法代码实例

    这篇文章主要介绍了Python文本文件的合并操作方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python内存读写操作示例

    Python内存读写操作示例

    这篇文章主要介绍了Python内存读写操作,结合实例形式分析了Python常见内存读写操作使用方法及相关注意事项,需要的朋友可以参考下
    2018-07-07
  • Python安装OpenCV的示例代码

    Python安装OpenCV的示例代码

    这篇文章主要介绍了Python安装OpenCV的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • windows安装TensorFlow和Keras遇到的问题及其解决方法

    windows安装TensorFlow和Keras遇到的问题及其解决方法

    这篇文章主要介绍了windows安装TensorFlow和Keras遇到的问题及其解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • Python字符串模糊匹配工具TheFuzz的用法详解

    Python字符串模糊匹配工具TheFuzz的用法详解

    在处理文本数据时,常常需要进行模糊字符串匹配来找到相似的字符串,Python的TheFuzz库提供了强大的方法用于解决这类问题,本文将深入介绍TheFuzz库,探讨其基本概念、常用方法和示例代码,需要的朋友可以参考下
    2023-12-12
  • 在脚本中单独使用django的ORM模型详解

    在脚本中单独使用django的ORM模型详解

    这篇文章主要介绍了在脚本中单独使用django的ORM模型详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论