# ========== 界面布局(新增持仓区域) ========== main_frame = ttk.Frame(self.root) main_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10) # 左侧区域:自选+持仓 left_total_frame = ttk.Frame(main_frame) left_total_frame.pack(side=tk.LEFT, fill=tk.Y, padx=(0, 10)) # 自选基金区域 fav_frame = ttk.LabelFrame(left_total_frame, text="自选基金(数据库存储)") fav_frame.pack(fill=tk.X, padx=0, pady=(0, 10)) self.fav_listbox = tk.Listbox(fav_frame, font=("微软雅黑", 8), width=80, height=10) self.fav_listbox.pack(padx=5, pady=5) self.fav_listbox.bind("<Double-Button-1>", self.fav_double_click) # 自选操作按钮 fav_btn_frame = ttk.Frame(fav_frame) fav_btn_frame.pack(padx=5, pady=5, fill=tk.X) ttk.Button(fav_btn_frame, text="添加到自选", command=self.add_to_fav).pack(side=tk.LEFT, padx=2) ttk.Button(fav_btn_frame, text="移除自选", command=self.remove_fav).pack(side=tk.LEFT, padx=2) self.refresh_fav_list() # 新增:持仓基金区域 position_frame = ttk.LabelFrame(left_total_frame, text="持仓基金(盈亏计算)") position_frame.pack(fill=tk.BOTH, expand=True) # 持仓列表 self.position_listbox = tk.Listbox(position_frame, font=("微软雅黑", 8), width=80, height=8) self.position_listbox.pack(padx=5, pady=5, fill=tk.BOTH, expand=True) # ========== 新增:绑定右键菜单 ========== # 创建右键菜单 self.position_menu = tk.Menu(self.root, tearoff=0) self.position_menu.add_command(label="删除该持仓", command=self.delete_selected_position) # 绑定右键点击事件 def show_position_menu(event): # 获取点击位置的列表项 try: # 定位选中的列表项 self.position_listbox.selection_clear(0, tk.END) self.position_listbox.selection_set(self.position_listbox.nearest(event.y)) # 显示右键菜单 self.position_menu.post(event.x_root, event.y_root) except: pass self.position_listbox.bind("<Button-3>", show_position_menu) # 绑定右键点击 # 持仓操作按钮 position_btn_frame = ttk.Frame(position_frame) position_btn_frame.pack(padx=5, pady=5, fill=tk.X) ttk.Button(position_btn_frame, text="刷新持仓", command=self.refresh_position_list).pack(side=tk.LEFT, padx=2) ttk.Button(position_btn_frame, text="清空持仓", command=self.clear_all_position).pack(side=tk.LEFT, padx=2) # 持仓汇总信息 self.position_summary_label = ttk.Label(position_frame, text="总盈亏:0.00元 | 总盈亏率:0.00%", font=("微软雅黑", 10, "bold"), foreground="#e63946") self.position_summary_label.pack(padx=5, pady=5)