看盘工具

from tkinter import *
import urllib.request
from PIL import Image, ImageTk
import os,io,threading,time
from tkinter import messagebox
win=Tk()
win.title('疯陈编程-看盘')
win.geometry('1270x800+200+100')
#win.attributes("-toolwindow", 1)
win.resizable(width=False,height=False)

f1 = LabelFrame(win,text='上证日线图')
f1.grid(row=0,column=0,padx=10,pady=10)

f2 = LabelFrame(win,text='上证分时图')
f2.grid(row=0,column=1,padx=10,pady=10)

f3 = LabelFrame(win,text='个股日线图')
f3.grid(row=1,column=0,padx=10,pady=10)

f4 = LabelFrame(win,text='个股分时图')
f4.grid(row=1,column=1,padx=10,pady=10)

f5 = LabelFrame(win,text='股票查询操作')
f5.grid(row=2,column=0,columnspan=2,padx=10,pady=10)

f6 = LabelFrame(win,text='盘口数据')
f6.grid(row=1,column=1,rowspan=3,padx=10,pady=10)

netDateUrl = 'http://hq.sinajs.cn/list=sz000078'

#获取股票数据当日数据
def getStockDate(netDateUrl):
    html = urllib.request.urlopen(netDateUrl).read()
    html = html.decode('gbk')
    stock_dict={}
    stock_dict['code'] = html[13:19]
    temp = html[21:246].split(',')
    stock_dict['name'] = temp[0]
    stock_dict['open'] = temp[1]
    stock_dict['close'] = temp[2]
    stock_dict['trade'] = temp[3]
    stock_dict['high'] = temp[4]
    stock_dict['low'] = temp[5]
    stock_dict['buy'] = temp[6]
    stock_dict['sell'] = temp[7]
    stock_dict['volume'] = str(int(temp[8])//100)+'手'
    stock_dict['money'] = str(float(temp[9])//10000)+'万'
    stock_dict['buy1vol'] = temp[10]
    stock_dict['buy1pri'] = temp[11]
    stock_dict['buy2vol'] = temp[12]
    stock_dict['buy2pri'] = temp[13]
    stock_dict['buy3vol'] = temp[14]
    stock_dict['buy3pri'] = temp[15]
    stock_dict['buy4vol'] = temp[16]
    stock_dict['buy4pri'] = temp[17]
    stock_dict['buy5vol'] = temp[18]
    stock_dict['buy5pri'] = temp[19]
    stock_dict['sell1vol'] = temp[20]
    stock_dict['sell1pri'] = temp[21]
    stock_dict['sell2vol'] = temp[22]
    stock_dict['sell2pri'] = temp[23]
    stock_dict['sell3vol'] = temp[24]
    stock_dict['sell3pri'] = temp[25]
    stock_dict['sell4vol'] = temp[26]
    stock_dict['sell4pri'] = temp[27]
    stock_dict['sell5vol'] = temp[28]
    stock_dict['sell5pri'] = temp[29]
    stock_dict['data'] = temp[30]
    stock_dict['time'] = temp[31]
    
    return stock_dict
#获取图片对象
def getImage(code,imtype):
    if imtype=='d':
        if code[0]=='6' or code=='000001':
            url = 'http://image.sinajs.cn/newchart/daily/n/sh'+code+'.gif'
        else:
            url = 'http://image.sinajs.cn/newchart/daily/n/sz'+code+'.gif'
        image_bytes = urllib.request.urlopen(url).read()
        data_stream = io.BytesIO(image_bytes)
        pil_image = Image.open(data_stream)
        tk_image = ImageTk.PhotoImage(pil_image)
        return tk_image
    else:
        if code[0]=='6' or code=='000001':
            url = 'http://image.sinajs.cn/newchart/min/n/sh'+code+'.gif'
        else:
            url = 'http://image.sinajs.cn/newchart/min/n/sz'+code+'.gif'
        image_bytes = urllib.request.urlopen(url).read()
        data_stream = io.BytesIO(image_bytes)
        pil_image = Image.open(data_stream)
        tk_image = ImageTk.PhotoImage(pil_image)
        return tk_image
    
#获取上证日线图
tk_image_shday = getImage('000001',imtype='d')
L1 = Label(f1, image=tk_image_shday) 
L1.grid(padx=5, pady=5) 
#获取上证分时图
tk_image_min_shshi = getImage('000001',imtype='m')
L2 = Label(f2, image=tk_image_min_shshi) 
L2.grid(padx=5, pady=5) 

#获取股票日线图
tk_image_day = getImage('000078',imtype='d')
L3 = Label(f3, image=tk_image_day) 
L3.grid(padx=5, pady=5) 
#获取股票分时图
tk_image_min = getImage('000078',imtype='d')
L4 = Label(f4, image=tk_image_min) 
L4.grid(padx=5, pady=5) 

var=StringVar()
var.set('')
Entry(f5,textvariable=var,width=20).grid(row=0,column=5,padx=10,pady=10)


def fun():
    code = var.get()
    if len(code)!=6:
        messagebox.showinfo('错误','请输入正确的股票代码!')
        return
    global L4,L3
    global im3,im4
    im3 = getImage(code,imtype='d')
    im4 = getImage(code,imtype='m')
    L3.config(image=im3)
    L4.config(image=im4)
    L3.update()
        
def fun2():
    p = threading.Thread(target = fun)
    p.setDaemon(True)#守护进程
    p.start()

Button(f5,text='上证指数').grid(row=0,column=0,padx=10,pady=10)
Button(f5,text='深证指数').grid(row=0,column=1,padx=10,pady=10)
Button(f5,text='中小板指数').grid(row=0,column=2,padx=10,pady=10)
Button(f5,text='创业板指数').grid(row=0,column=3,padx=10,pady=10)
Button(f5,text='数据同步').grid(row=0,column=4,padx=10,pady=10)

Button(f5,text='查询股票',command=fun).grid(row=0,column=6,padx=10,pady=10)
Button(f5,text='停止刷新').grid(row=0,column=7,padx=10,pady=10)
Button(f5,text='退出程序').grid(row=0,column=8,padx=10,pady=10)
win.mainloop()

  

你可能感兴趣的:(看盘工具)