用Tkinter打造GUI開發工具(25)Table表格控件
採用Python自帶Tkinter庫開發GUI軟件,學習負擔爲零,因此受到很多朋友喜愛。但是原始的Tkinter庫控件比較簡單,但是它爲我們提供可以擴展新控件的空間。
Tkinter沒有表格控件,我們可以採用2種方式來實現。
第一種,採用佈局方式,畫出表格。
上圖實現的代碼段
v2=tk.LabelFrame(root1, text="最佳策略",font = 'Helvetica %d'%fsize)
v2.place(x=570,y=2,width=300,height=170)
v3=tk.LabelFrame(root1, text="最高成功率",font = 'Helvetica %d'%fsize)
v3.place(x=880,y=2,width=300,height=170)
v2a=tk.Frame(v2,bg='black')
v2a.pack(expand=tk.YES,fill=tk.X,side=tk.TOP,padx=5,pady=5)
label1=tk.Label(v2a,text='最佳策略代碼:',bg='yellow',font = 'Helvetica %d'%fsize)
label1.grid(row=0,column=0,padx=1,pady=1,sticky=tk.NSEW)
label2=tk.Label(v2a,text=' ',bg='yellow',font = 'Helvetica %d'%fsize)
label2.grid(row=0,column=1,padx=1, pady=1,sticky=tk.NSEW)
label3=tk.Label(v2a,text='成功率:',bg='yellow',font = 'Helvetica %d'%fsize)
label3.grid(row=1,column=0,padx=1,pady=1,sticky=tk.NSEW)
label4=tk.Label(v2a,text=' ',bg='yellow',font = 'Helvetica %d'%fsize)
label4.grid(row=1,column=1,padx=1, pady=1,sticky=tk.NSEW)
label5=tk.Label(v2a,text='收益率:',bg='yellow',font = 'Helvetica %d'%fsize)
label5.grid(row=2,column=0,padx=1,pady=1,sticky=tk.NSEW)
label6=tk.Label(v2a,text=' ',bg='yellow',font = 'Helvetica %d'%fsize)
label6.grid(row=2,column=1,padx=1, pady=1,sticky=tk.NSEW)
label7=tk.Label(v2a,text='最大回撤:',bg='yellow',font = 'Helvetica %d'%fsize)
label7.grid(row=3,column=0,padx=1,pady=1,sticky=tk.NSEW)
label8=tk.Label(v2a,text=' ',bg='yellow',font = 'Helvetica %d'%fsize)
label8.grid(row=3,column=1,padx=1, pady=1,sticky=tk.NSEW)
label7a=tk.Label(v2a,text='股票代碼:',bg='yellow',font = 'Helvetica %d'%fsize)
label7a.grid(row=4,column=0,padx=1,pady=1,sticky=tk.NSEW)
label8a=tk.Label(v2a,text=' ',bg='yellow',font = 'Helvetica %d'%fsize)
label8a.grid(row=4,column=1,padx=1, pady=1,sticky=tk.NSEW)
上面代碼給出實現過程,如果看不明白,可以購買<零基礎搭建量化投資系統>正版書,加入讀者羣諮詢。
上圖就是採用小白量化平臺提供的模塊爲網友定製的T+0回測軟件。
第二種,採用採用小白量化軟件提供的HP_tk.py模塊提供的Table表格控件。
見下圖小白量化軟件中的表格。
下面我們介紹用戶如何使用小白量化平臺提供的模塊設計自己的表格。
import tkinter as tk
from tkinter import ttk
import HP_tk as htk #導入小白量化htk模塊
import HP_tdx as htdx #導入小白量化通達信行情模塊
#創建主窗口
root=htk.MainWindow(title='tkinter主窗口',x=0,y=0,w=600, h=600,picture='',zoom=True,center=True)
tb=htk.Table(root) #創建表格控件
tb.pack(expand = 1, fill = tk.BOTH)
tdxapi=htdx.TdxInit2() #連接通達信行情源
#獲取深圳股票代碼表
sz1=htdx.getSZ()
sz1=sz1.round(2) #改變符點數小數點後2位
tb.load_df(sz1) #把變量df的數據顯示到表格中
tb.brush('yellow','white') #用2種底色交替顯示錶格
def rxt():
print('日線圖')
def zxg():
print('加入自選股')
# 創建彈出菜單
menubar=tk.Menu(tb.tree)
toolbarName2 = ('日線圖','分時圖','F10信息','加入自選股')
toolbarCommand2 = (rxt,rxt,rxt,zxg)
def addPopButton(name,command):
for (toolname ,toolcom) in zip(name,command):
menubar.add_command(label=toolname,command=toolcom)
def pop(event):
# Menu 類裏面有一個 post 方法,它接收兩個參數,即 x 和y 座標,它會在相應的位置彈出菜單。
menubar.post(event.x_root,event.y_root)
addPopButton(toolbarName2,toolbarCommand2) #創建彈出菜單
tb.tree.bind("<Button-3>",pop)
root.mainloop() #開啓tk主循環
程序執行結果如下圖:
HP_tk.py和HP_tdx.py是小白量化提供的模塊之一。完整代碼見《零基礎搭建量化投資系統――以Python爲工具》一書提供的完整示例。
該書在京東、淘寶、噹噹網上銷售,歡迎大家訂購正版書。
#購買<零基礎搭建量化投資系統>正版書,送小白量化軟件源代碼。
#獨狼荷蒲qq:2775205
#通通小白python量化羣:524949939
#電話微信:18578755056
#微信公衆號:獨狼股票分析
其他QQ羣:
PythonTkinterGUI : 517029284
Python學習交流: 647866213