python thinker canvas详解_python 下 tinker、matplotlib 混合编程示例一个

import matplotlib

import matplotlib.datesasmdates

import pandasaspdfrommatplotlib.figure import Figurefrommatplotlib.finance import candlestick_ohlcfrommatplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAggfrommatplotlib.backend_bases import key_press_handlerfromnumpy import arange, sin, pi

matplotlib.use(‘TkAgg‘)

import sysif sys.version_info[0] < 3:

import TkinterasTkelse:

import tkinterasTk

root=Tk.Tk()

root.wm_title("CNY exchange rate")

root.iconbitmap(‘my_logo.ico‘)

# read data

data= pd.read_csv("data.csv", index_col=0, parse_dates=True)

data=data.reset_index()

data[‘Date2‘] = data[‘Date‘].apply(lambda d: mdates.date2num(d.to_pydatetime()))

tuples= [tuple(x) for x in data[[‘Date2‘,‘Open‘,‘High‘,‘Low‘,‘Close‘]].values]

# drawArea setup

drawArea= Figure(figsize=(10, 5), dpi=100)

ax= drawArea.add_axes([0.1, 0.2, 0.85, 0.7])

ax.spines[‘right‘].set_color(‘none‘)

ax.spines[‘top‘].set_color(‘none‘)

ax.xaxis.set_ticks_position(‘bottom‘)

ax.yaxis.set_ticks_position(‘left‘)

ax.tick_params(axis=‘both‘,

direction=‘out‘,

width=2,

length=8,

labelsize=12,

pad=8)

ax.spines[‘left‘].set_linewidth(2)

ax.spines[‘bottom‘].set_linewidth(2)

ax.set_xticklabels(data[‘Date2‘], rotation=45, horizontalalignment=‘right‘)

ax.xaxis_date()

ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))

ax.set_ylabel(‘Price ($)‘, size=17)

candlestick_ohlc(ax, tuples, width=.5, colorup=‘r‘, colordown=‘g‘);

# a tk.canvas

canvas= FigureCanvasTkAgg( drawArea, master=root)

canvas.show()

canvas.get_tk_widget().grid(row=1, columnspan=4)

toolbar=NavigationToolbar2TkAgg(canvas, root)

toolbar.update()

toolbar.grid(row=2, columnspan=4)

#canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

def _refresh():

ax.clear()

data= pd.read_csv("data2.csv", index_col=0, parse_dates=True)

data=data.reset_index()

data[‘Date2‘] = data[‘Date‘].apply(lambda d: mdates.date2num(d.to_pydatetime()))

tuples= [tuple(x) for x in data[[‘Date2‘,‘Open‘,‘High‘,‘Low‘,‘Close‘]].values]

ax.spines[‘right‘].set_color(‘none‘)

ax.spines[‘top‘].set_color(‘none‘)

ax.xaxis.set_ticks_position(‘bottom‘)

ax.yaxis.set_ticks_position(‘left‘)

ax.tick_params(axis=‘both‘,

direction=‘out‘,

width=2,

length=8,

labelsize=12,

pad=8)

ax.spines[‘left‘].set_linewidth(2)

ax.spines[‘bottom‘].set_linewidth(2)

ax.set_xticklabels(data[‘Date2‘], rotation=45, horizontalalignment=‘right‘)

ax.xaxis_date()

ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))

ax.set_ylabel(‘Price ($)‘, size=17)

candlestick_ohlc(ax, tuples, width=.5, colorup=‘r‘, colordown=‘g‘);

canvas.show()

Tk.Label(root,text=‘Money‘).grid(row=0,column=0)

defaultVar=Tk.StringVar(root)

defaultVar.set("CNY") # defaultvalue

moneyList= Tk.OptionMenu(root, defaultVar, "CNY", "USD", "EUR")

moneyList.grid(row=0, column=1)

btnRefresh= Tk.Button(master=root, text=‘Refresh‘, command=_refresh)

btnRefresh.grid(row=0, column=3)

Tk.mainloop()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值