资讯专栏INFORMATION COLUMN

Python 入门继续用tkinter实现股票查询

cartoon / 2703人阅读

摘要:代码思路通过获取输入内容股票代码,然后通过按键添加,按键删除,添加在列表中的代码都能通过查询按钮获取到最新的股票信息。唯一的遗憾是没有实现手动选择更新频率。当然使用也是没问题哒直接得到的就是格式的则需要转换格式简易股票查询不足之处请见谅

继续练习tkinter,顺便学习如何抓取网页内容。

使用urllib和requests都能得到url中的内容,有一丁点儿的区别。
代码思路:通过Entry获取输入内容(股票代码),然后通过Add按键添加,Del按键删除,添加在列表中的代码都能通过查询按钮获取到最新的股票信息。唯一的遗憾是没有实现手动选择更新频率。
与上一篇内容有惊人的相似。

获取网页内容之前做的工作:
1.分析需要获取的网页
2.打开chrome浏览器,点击右键查看,网页代码中找到Network,可以看到出现的链接及协议
3.决定获取的方式,可以根据对网页的分析结果,采用匹配策略

import urllib.request
#import requests
import tkinter
from tkinter import *


class StockParser():
    def __init__(self,code_data,edit):
        self.stock_data = code_data
        self.edit=edit
        
        if self.stock_data.split(""")[1] =="": 
            pass
        else:
            print(self.stock_data.split(""")[1])
            self.stock_data=self.stock_data.split(""")[1]
            name = self.stock_data.split(",")[0]
            opening_price = float(self.stock_data.split(",")[1])
            closing_price = float(self.stock_data.split(",")[2])
            price = float(self.stock_data.split(",")[3])
            high = float(self.stock_data.split(",")[4])
            low = float(self.stock_data.split(",")[5])
            
            self.edit.insert(END,[name,opening_price,closing_price,high,low,price,])
    


class Window:
    def __init__(self, root):
        self.root = root      # 创建组件
        self.entryUrl = tkinter.Entry(root,width = 30)
        self.entryUrl.place(x = 65, y = 15)
        self.get = tkinter.Button(root,text = "查询", command = self.Get)
        self.get.place(x = 350, y = 15)
        self.add = tkinter.Button(root,text = "添加", command = self.Add)
        self.delete = tkinter.Button(root,text = "删除", command = self.Del)
        self.add.place(x = 80, y = 55)
        self.delete.place(x=120,y=55)    
        #添加布局框 下面的self.edit, self.scrollbar是插入在frame中的哦    
        self.frame = tkinter.Frame(root, bd=2)
        self.frame.place(x=200,y = 90)
        self.scrollbar = tkinter.Scrollbar(self.frame)
        self.edit = tkinter.Listbox(self.frame,yscrollcommand = self.scrollbar.set,
                width = 50, height = 22)  
        self.scrollbar.config(command=self.edit.yview)
          
        self.edit.grid(row=1,column=2)#这里用了grid,可以学习一下它的用法
        self.scrollbar.grid(row=1,column=3,sticky="ew")
        
        self.indicate=tkinter.Label(root,text="(Please input stock code:sh000000)",fg="red") #这里是完全没有改动,沿用上一节
        self.indicate.place(x=65,y=35)
        self.StockList=[]
    def ListUpdate(self):
        self.lb=tkinter.Listbox(self.root,selectmode = BROWSE)
        for code in self.StockList:
            self.lb.insert(END,code)
        self.lb.pack()
        self.lb.place(x=50,y=90)    
    def Add(self):
        code = self.entryUrl.get()    
        if re.match(r"w{2}d{6}$",code) and code not in self.StockList:
            self.StockList.append(code) 
        else:
            pass
        self.ListUpdate()

    def Del(self):
        code=self.entryUrl.get()
        if code in self.StockList:
            self.StockList.remove(code)
        self.ListUpdate()

    def Get(self):
        if self.edit.get(0):
            print(self.edit.get(0))
            self.edit.delete(0,END)
        self.edit.insert(END,["名 字","开盘价","闭盘价","最高","最低","当前价格"])
        for code in self.StockList: 
            url="http://hq.sinajs.cn/list=%s" % (code,)
            page=urllib.request.urlopen(url) #为什么urllib不行呢?
            html= page.read() #记住这样得到的是html,必要是需要用HTMLParser解析,或者手动解析。
            stock_data=html.decode("gb2312")
            #r = requests.get(url)#当然使用requests也是没问题哒               
            #stock_data= r.text  #text直接得到的就是str格式的
            #stock_content=r.content.decode("gb2312")#content则需要转换格式
            hp = StockParser(stock_data,self.edit)

def main():

    root = tkinter.Tk()
    root.title("简易股票查询")
    window = Window(root)
    root.minsize(600,500)
    root.maxsize(600,500)
    root.mainloop()

if __name__ =="__main__":
    main()

不足之处请见谅

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38347.html

相关文章

  • python入门tkinter实现简单的RSS功能

    摘要:,库的使用,注意已经与有了很大不同。对于下面的,定义了一些窗口属性,接下来在代码中我会简单记录一下它的用法。 这次练习的题目是实现一个简单的RSS功能,需要了解的知识点: tkinter,在上一篇《简单的记事本》中已经了解了一些tkinter的用法,在这里延续了上一篇,加深一下印象。 urllib,HTMLPaser库的使用,注意python3已经与python2有了很大不同。 #...

    Cheng_Gang 评论0 收藏0
  • [译][Tkinter 教程01] 入门: Label 控件

    摘要:已获原作者授权原系列地址下面我们将以中最简单的控件控件开始这个系列的教程在中控件用以显示文字和图片通常被用来展示信息而非与用户交互译者注也可以绑定点击等事件只是通常不这么用程序员的教程怎么能少了我们尊重这个传统但我们不说让我们来秀出吧下面的 已获原作者授权. 原系列地址: Python Tkinter Hello Tkinter Label 下面我们将以 Tkinter 中最简单的控...

    Sike 评论0 收藏0
  • python入门之一个简单记事本

    摘要:最近在练习一个关于项目的列表,拿到列表看到这是要实现一个记事本功能,刚开始拿到题目真有点懵。尤其是试验之后发现一定要用类实现起来才简单一些,对于这点类,,要知道本人已经接触语言多年,但对于面向对象还是一窍不通。 最近在练习一个关于python项目的列表,拿到列表看到这是要实现一个记事本功能,刚开始拿到题目真有点懵。虽然用python实现excel的处理已经很熟悉了,且已经把python...

    xietao3 评论0 收藏0
  • 磨刀霍霍:爬爬爬爬爬爬虫爬起来~

    摘要:目标很简单,因为我想要爬一下证券化率,然后可视化输出结果。证券化率的基础就是上市公司的总市值,对于证券化率其实还蛮多说法的,比如雪球的这篇文。我们可以利用这个回调函数来显示当前的下载进度。 写在前面的叨叨 折腾了这么久,我终于在喝完一听快乐肥宅水后下定决心来学习写爬虫了。目标很简单,因为我想要爬一下证券化率,然后可视化输出结果。证券化率的基础就是上市公司的总市值,对于证券化率其实还蛮多...

    Allen 评论0 收藏0
  • 机器学习入门笔记

    摘要:摘要本文是作者看慕课网学习记录笔记,内容技术水准是入门,大佬看到请轻言指点,手下留情介绍人工智能的基本概念和逻辑体系研究两种麵分类算法通过运用分类算法,实现只有一层的神经网络介绍分类算法的理论基础机器学习的本质模拟人的神经元神经元人工神经元 摘要 本文是作者看慕课网学习记录笔记,内容技术水准是入门,大佬看到请轻言指点,手下留情 介绍人工智能的基本概念和逻辑体系 研究两种麵分类算法 通...

    miguel.jiang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<