Fix position list default height to fit 5 rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-17 21:44:40 +08:00
parent a70d8656e7
commit 846fdedc1f
2 changed files with 17 additions and 6 deletions
+17 -6
View File
@@ -52,6 +52,8 @@ LOT_MID = 0.05
LOT_LOW = 0.01 LOT_LOW = 0.01
MAX_SIDE_LOTS = 0.50 MAX_SIDE_LOTS = 0.50
MAX_OPEN_POSITIONS = 5 # 同时最多持仓笔数,满则买卖置灰 MAX_OPEN_POSITIONS = 5 # 同时最多持仓笔数,满则买卖置灰
POS_ROW_HEIGHT = 46 # 持仓列表单行约高(含内边距)
POS_LIST_HEIGHT = POS_ROW_HEIGHT * MAX_OPEN_POSITIONS # 默认可视 5 条持仓高度
DAY_LOSS_LOCK = 0.05 # 当日合计亏损达余额 5% 禁止开仓 DAY_LOSS_LOCK = 0.05 # 当日合计亏损达余额 5% 禁止开仓
DAY_PROFIT_LOCK = 0.10 # 当日合计盈利达余额 10% 禁止开仓 DAY_PROFIT_LOCK = 0.10 # 当日合计盈利达余额 10% 禁止开仓
# 币圈习惯:绿涨红跌 # 币圈习惯:绿涨红跌
@@ -939,8 +941,14 @@ class OrderApp(tk.Tk):
("浮盈", 9), ("浮盈", 9),
("操作", 10), ("操作", 10),
] ]
pos_wrap = tk.Frame(root, bg="#2b2b2b", highlightthickness=0) # 持仓区固定为 5 行可视高度,超出可滚动
pos_wrap.pack(fill=tk.BOTH, expand=True) pos_wrap = tk.Frame(
root,
bg="#2b2b2b",
highlightthickness=1,
highlightbackground="#2a2a38",
)
pos_wrap.pack(fill=tk.X, expand=False, pady=(0, 0))
self.pos_head = tk.Frame(pos_wrap, bg="#333333") self.pos_head = tk.Frame(pos_wrap, bg="#333333")
self.pos_head.pack(fill=tk.X) self.pos_head.pack(fill=tk.X)
@@ -955,9 +963,12 @@ class OrderApp(tk.Tk):
anchor="center", anchor="center",
).grid(row=0, column=i, sticky="nsew", padx=2, pady=6) ).grid(row=0, column=i, sticky="nsew", padx=2, pady=6)
body = tk.Frame(pos_wrap, bg="#2b2b2b") body = tk.Frame(pos_wrap, bg="#2b2b2b", height=POS_LIST_HEIGHT)
body.pack(fill=tk.BOTH, expand=True) body.pack(fill=tk.X, expand=False)
self.pos_canvas = tk.Canvas(body, bg="#2b2b2b", highlightthickness=0, bd=0) body.pack_propagate(False)
self.pos_canvas = tk.Canvas(
body, bg="#2b2b2b", highlightthickness=0, bd=0, height=POS_LIST_HEIGHT
)
scroll = ttk.Scrollbar(body, orient=tk.VERTICAL, command=self.pos_canvas.yview) scroll = ttk.Scrollbar(body, orient=tk.VERTICAL, command=self.pos_canvas.yview)
self.pos_inner = tk.Frame(self.pos_canvas, bg="#2b2b2b") self.pos_inner = tk.Frame(self.pos_canvas, bg="#2b2b2b")
self.pos_inner.bind( self.pos_inner.bind(
@@ -965,7 +976,7 @@ class OrderApp(tk.Tk):
lambda e: self.pos_canvas.configure(scrollregion=self.pos_canvas.bbox("all")), lambda e: self.pos_canvas.configure(scrollregion=self.pos_canvas.bbox("all")),
) )
self._pos_window = self.pos_canvas.create_window((0, 0), window=self.pos_inner, anchor="nw") self._pos_window = self.pos_canvas.create_window((0, 0), window=self.pos_inner, anchor="nw")
self.pos_canvas.configure(yscrollcommand=scroll.set) self.pos_canvas.configure(yscrollcommand=scroll.set, height=POS_LIST_HEIGHT)
self.pos_canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) self.pos_canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
scroll.pack(side=tk.RIGHT, fill=tk.Y) scroll.pack(side=tk.RIGHT, fill=tk.Y)
self.pos_canvas.bind("<Configure>", self._on_pos_canvas_configure) self.pos_canvas.bind("<Configure>", self._on_pos_canvas_configure)
Binary file not shown.