rs6000

Tkinter treeview column sort

Oct 28th, 2020 (edited)
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.37 KB | None | 0 0
  1. #測試用 無爬蟲程式
  2. #source https://bit.ly/2HmF5Xs
  3. import tkinter as tk
  4. from tkinter import ttk
  5. import time
  6.  
  7. # 測試用資料 li 股價代號 現價 漲跌幅度
  8. '''
  9. 資料格式
  10. 公司代碼(0) 現價(1) 前價(2) 價差(3)
  11. '''
  12. #li = [('BDO','93.95',-1),('CEB','40.7',1),('DITO','3.42',0)]
  13. li=[('2GO', 8.91, 8.8, 1.2499999999999936),
  14.  ('8990P', 102.0, 101.0, 0.9900990099009901),
  15.  ('AAA', 1.61, 1.61, 0.0),
  16.  ('AB', 9.74, 9.59, 1.5641293013555824),
  17.  ('ABA', 0.48, 0.485, -1.0309278350515474),
  18.  ('ABG', 8.38, 8.8, -4.772727272727272),
  19.  ('ABS', 11.4, 11.4, 0.0),
  20.  ('ABSP', 10.82, 10.98, -1.4571948998178519),
  21.  ('AC', 760.0, 760.0, 0.0),
  22.  ('ACE', 1.21, 1.11, 9.009009009008997)]
  23.  
  24.  
  25. root = tk.Tk()
  26. root.title('看盤小幫手')
  27.  
  28.  
  29. #https://bit.ly/2TCp1U0
  30. def treeview_sort_column(tv, col, reverse):
  31.     l = [(tv.set(k, col), k) for k in tv.get_children('')]
  32.     l.sort(key=lambda t: float(t[0]), reverse=reverse)
  33.     #      ^^^^^^^^^^^^^^^^^^^^^^^
  34.  
  35.     for index, (val, k) in enumerate(l):
  36.         tv.move(k, '', index)
  37.  
  38.     tv.heading(col,
  39.                command=lambda: treeview_sort_column(tv, col, not reverse))
  40.  
  41. #報價更新時間
  42. lbl_lastupdate=tk.Label(root)
  43. lbl_lastupdate.grid(row=0,column=0,columnspan=3)
  44.  
  45. columns=('1','2')
  46. tree=ttk.Treeview(root,show="headings",columns=columns )#表格
  47.  
  48.  
  49. #tree = ttk.Treeview(root,columns=['1','2'],show='headings')
  50. tree.tag_configure('+', background='red')
  51. tree.tag_configure('-', background='green')
  52.  
  53.  
  54. tree.column('1',width=150,anchor='center')
  55. tree.column('2',width=150,anchor='center')
  56.  
  57. tree.heading('1',text='股票代號')
  58. tree.heading('2',text='現價')
  59.  
  60.  
  61. for i in li:
  62.     if i[3]<0:
  63.         tree.insert('','end', values=i,tags = ('-',))
  64.     elif i[3]==0:
  65.         tree.insert('','end', values=i)
  66.     else:
  67.         tree.insert('','end', values=i,tags = ('+',))
  68.    
  69.  
  70.  
  71. tree.grid(row=1,column=0,columnspan=3)
  72.  
  73. #新增股票監看名單 功能未實作
  74. lbl_addsymbol=tk.Label(root,text="增加股票代號:", fg="green")
  75. lbl_addsymbol.grid(row=2,column=0)
  76. txt_input=tk.Entry(root,width=10)
  77. txt_input.grid(row=2,column=1)
  78. btn_confirm=tk.Button(root,text="確認", fg="green")
  79. btn_confirm.grid(row=2,column=2)
  80.  
  81. #columns[1] 只對現價做排序
  82. for col in columns[1]:
  83.     tree.heading(col,command=lambda c=col: treeview_sort_column(tree, c, False))
  84.    
  85.  
  86. root.mainloop()
Add Comment
Please, Sign In to add comment