python小程序代码gui_【python GUI小程序】之 股票信息 桌面小程序

#-*- coding: UTF-8 -*-

importtkinterimporttkinter as tkfrom tkinter.ttk import *

importreimporttimeimporturllib3importthreadingimportthreadpoolimportconfigparser#treeview不显示颜色补丁方法

deffixed_map(option):return [elm for elm in style.map("Treeview", query_opt=option) if elm[:2] != ("!disabled", "!selected")]#停止监控

defstop_hit_me():globalon_hitglobalbglobalb2

on_hit=False#点击停止监控,开始监控按钮变为可按状态,停止监控按钮为不可按状态

b2['state'] = 'disabled'b['state'] = 'active'

#开始监控

defhit_me():globalon_hitglobalbglobalb2#点击开始监控,开始监控按钮变为不可按状态,停止监控按钮为可按状态

b['state']='disabled'b2['state']='active'on_hit=True#开启线程后台循环更新数据

timer = threading.Thread(target=getdata)

timer.daemon=True

timer.start()return

#循环监控

defgetdata():globaltreeglobalon_hitglobaltimelable#读取config.ini文件,读出需要监控的股票号

cfg1 = "config.ini"conf=configparser.ConfigParser()

conf.read(cfg1)

numbers= conf.get("StockCode", "Code")#当监控开关按下时,循环获取股票信息

while(on_hit==True):#待更新表格行数

line=0#清空表格

x =tree.get_children()for item inx:

tree.delete(item)#web请求获取股票信息

http = urllib3.PoolManager(timeout=5.0)

urllib3.disable_warnings()

res= http.request('GET', 'http://hq.sinajs.cn/list=' +numbers)

content= str(res.data, "gbk")

numbersarray= content.split(";")

numbersarray.pop()for one innumbersarray:

pattern4= re.compile(r'hq_str_([^=]*)', re.M)

result114=pattern4.findall(one)ifresult114:

number=result114[0]

pattern5= re.compile(r'"([^"]*)"', re.M)

result115=pattern5.findall(one)ifresult115:

allparts= result115[0].split(",")

name=allparts[0]

new= round(float(allparts[3]),2)

percent= str(round((float(allparts[3]) - float(allparts[2])) / float(allparts[1]) * 100, 3))+"%"zhangdie= round(float(allparts[3]) - float(allparts[2]), 2)if zhangdie >0:

tree.insert("", line, values=(number, name, new, percent, zhangdie), tags=('redrow',))elif zhangdie <0:

tree.insert("", line, values=(number, name, new, percent, zhangdie), tags=('greenrow',))else:

tree.insert("", line, values=(number, name, new, percent, zhangdie))

timelable['text'] = '数据时间:'+allparts[30]+' '+allparts[31]

line= line + 1time.sleep(3)#初始化窗口

window =tkinter.Tk()#窗口永远在windows最顶端

window.wm_attributes('-topmost',1)#程序标题

window.title("Rax 股票监控工具")#窗口大小

window.geometry('500x300')#是否可调整大小

window.resizable(0,0)#列表不显示颜色补丁

style =Style()

style.map("Treeview",foreground=fixed_map("foreground"),background=fixed_map("background"))#循环监控开关

on_hit =False#初始化显示更新时间的标签

timelable = tkinter.Label(window, text='', font=('Arial', 10))#标签放置位置

timelable.place(x=250, y=280, anchor='nw')#初始化数据表格

columns =("股票代码","股票名称","最新","涨幅","涨跌")

tree=Treeview(window, show = "headings", columns = columns, selectmode =tk.BROWSE)#设置两种行颜色表示涨跌

tree.tag_configure('redrow', background='Salmon',foreground='black')

tree.tag_configure('greenrow', background='PaleGreen',foreground='black')

tree.pack()#设置每列数据的宽度

tree.column("股票代码",width=100)

tree.column("股票名称",width=100)

tree.column("最新",width=100)

tree.column("涨幅",width=100)

tree.column("涨跌",width=100)#设置表格头各列名称

tree.heading("股票代码",text="股票代码")

tree.heading("股票名称",text="股票名称")

tree.heading("最新",text="最新")

tree.heading("涨幅",text="涨幅")

tree.heading("涨跌",text="涨跌")#初始化开始监控按钮并设置位置

b = tkinter.Button(window, text='开始监控', font=('Arial', 10), width=10, command=hit_me)

b.place(x=150, y=230, anchor='nw')#初始化停止监控按钮并设置位置

b2 = tkinter.Button(window, text='停止监控', font=('Arial', 10), width=10, command=stop_hit_me)

b2.place(x=250, y=230, anchor='nw')#停止监控初始为不可点击状态

b2['state'] = 'disabled'

#启动程序

window.mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值