📜  使用Python构建 GUI 应用程序以获取实时股票价格(1)

📅  最后修改于: 2023-12-03 14:49:50.638000             🧑  作者: Mango

使用Python构建 GUI 应用程序以获取实时股票价格

GUI应用程序已经成为传统命令行应用程序的主流替代品。Python语言有许多GUI框架可供选择,您可以按照自己的喜好进行选择。在本文中,我们将探讨如何使用Python构建GUI应用程序,以获取实时股票价格。

选择GUI框架

在Python中,有许多GUI框架可供选择:

  • Tkinter
  • PyQt
  • wxPython
  • Kivy

以上框架,基于使用方便性、生态支持、稳定性等因素,我们考虑使用PyQt框架来构建GUI应用程序以获取实时股票价格。

安装PyQt

执行以下命令来安装PyQt:

pip install PyQt5
GUI应用程序设计构思

我们将构建一个简单的GUI应用程序,其设计包含以下元素:

  • 文本框:显示股票代码和实时价格。
  • 按钮:用于获取实时股票价格。
编写GUI应用程序

创建GUI应用程序的基本代码框架如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

class MyApp(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Stock Price Viewer')
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

在上述代码中,我们使用了PyQt5.QtWidgets包中的QApplication和QWidget类。QApplication类在我们的应用程序中创建了一个事件循环,而QWidget类提供了一个应用程序中可见的窗口。

接下来,我们将在我们的GUI应用程序中添加文本框和按钮。

首先,我们将文本编辑框和标签设置在网格布局中,以便使它们更好地组织。代码如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel, QLineEdit, QPushButton

class MyApp(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        grid = QGridLayout()
        self.setLayout(grid)

        code = QLabel('Code:')
        grid.addWidget(code, 1, 0)

        price = QLabel('Price:')
        grid.addWidget(price, 2, 0)

        code_edit = QLineEdit()
        grid.addWidget(code_edit, 1, 1)

        price_edit = QLineEdit()
        grid.addWidget(price_edit, 2, 1)

        btn = QPushButton('Get Price')
        grid.addWidget(btn, 3, 1)

        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Stock Price Viewer')
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

在上述代码中,我们将文本标签添加到网格布局中,我们还添加了两个QLineEdit对象和一个QPushButton对象。

在我们的GUI应用程序中,我们通过按钮来获取股票价格。我们将使用yahoo_fin包来获取实时股票价格。

下载Yahoo Finance数据

要从Yahoo Finance获取数据,我们需要安装yahoo_fin包:

pip install yahoo_fin

在我们的GUI应用程序中,我们使用yahoo_fin库从Yahoo Finance获取股票数据。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel, QLineEdit, QPushButton
from yahoo_fin import stock_info as si

class MyApp(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        grid = QGridLayout()
        self.setLayout(grid)

        code = QLabel('Code:')
        grid.addWidget(code, 1, 0)

        price = QLabel('Price:')
        grid.addWidget(price, 2, 0)

        code_edit = QLineEdit()
        grid.addWidget(code_edit, 1, 1)

        price_edit = QLineEdit()
        grid.addWidget(price_edit, 2, 1)

        btn = QPushButton('Get Price')
        btn.clicked.connect(lambda: self.get_price(code_edit.text(), price_edit))
        grid.addWidget(btn, 3, 1)

        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Stock Price Viewer')
        self.show()

    def get_price(self, code, price_edit):

        price = si.get_live_price(code)
        price_edit.setText('$ {price:.2f}'.format(price=price))

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

在get_price函数中,我们使用代码参数从Yahoo Finance获取股票价格。我们通过连接到button的clicked事件来调用get_price函数。

现在我们把所有代码一起,整合成整个GUI应用程序:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel, QLineEdit, QPushButton
from yahoo_fin import stock_info as si

class MyApp(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        grid = QGridLayout()
        self.setLayout(grid)

        code = QLabel('Code:')
        grid.addWidget(code, 1, 0)

        price = QLabel('Price:')
        grid.addWidget(price, 2, 0)

        code_edit = QLineEdit()
        grid.addWidget(code_edit, 1, 1)

        price_edit = QLineEdit()
        grid.addWidget(price_edit, 2, 1)

        btn = QPushButton('Get Price')
        btn.clicked.connect(lambda: self.get_price(code_edit.text(), price_edit))
        grid.addWidget(btn, 3, 1)

        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Stock Price Viewer')
        self.show()

    def get_price(self, code, price_edit):

        price = si.get_live_price(code)
        price_edit.setText('$ {price:.2f}'.format(price=price))

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

你会发现,现在我们已经有了一个功能完整、简单易用的GUI应用程序,用于获取实施股票价格。

尝试运行此程序,你应该能够在GUI应用程序中输入股票代码,点击“获取价格”按钮,应用程序将从Yahoo Finance获取实时股票价格并在应用程序中显示。

这就是如何使用Python和PyQt5构建一个简单的GUI应用程序来获取实时股票价格的示例。