把代码完整写出来,(在写代码过程中要注意:模块1里有内容改动)。修改后强调写出完整代码。class MainInterface:
def init(self, root: Tk, pool: NumberPool):
self.root = root
self.pool = pool
self.left_panel = None
self.center_frame = None
self.right_panel = None
self.core_vars = {}
self.pool_vars = {}
self.status_var = StringVar()
self.dynamic_text = None
self.current_module = None
self._setup_ui()
self._setup_event_handlers()
self.dynamic_content = None
self.module_instances = {} # 添加模块实例存储
self._init_modules() # 初始化所有模块 def _init_modules(self): """初始化所有分析模块""" modules = { 'input_analysis': InputAnalysisModule, 'combination_analysis': CombinationAnalysisModule, 'follow_analysis': FollowAnalysisModule, 'trend_analysis': TrendAnalysisModule, 'number_generation': NumberGenerationModule } for name, cls in modules.items(): self.module_instances[name] = cls(name) def _setup_event_handlers(self): """初始化事件处理器""" event_center.subscribe(EventType.MODULE_COMPLETE, self._handle_module_complete) event_center.subscribe(EventType.UI_UPDATE, self._handle_ui_update) def _setup_ui(self): self.root.title(f"大乐透智能分析平台 - {GlobalConfig.VERSION}") self.root.geometry("1400x800") # 添加主标题(居中显示在最上面)title_frame = Frame(self.root) title_frame.pack(fill='x', pady=5) Label(title_frame, text="大乐透智能分析平台", font=('微软雅黑', 16, 'bold')).pack(expand=True) # 主容器 main_container = Frame(self.root) main_container.pack(fill='both', expand=True, padx=5, pady=(0, 5)) # 左侧面板 self.left_panel = Frame(main_container, width=200, bg="#eaeaea") self.left_panel.pack(side='left', fill='y', padx=(0, 5)) # 中间内容区 self.center_frame = Frame(main_container, width=600) self.center_frame.pack(side='left', fill='both', expand=True) # 右侧面板 self.right_panel = Frame(main_container, width=600, bg="#f5f5f5") self.right_panel.pack(side='right', fill='y') # 初始化各区域 self._setup_left_panel() self._setup_center_area() self._setup_right_panel() def _setup_left_panel(self): """初始化左侧模块按钮区""" module_names = { 'input_analysis': '1. 输入分析', 'combination_analysis': '2. 组合分析', 'follow_analysis': '3. 跟随分析', 'trend_analysis': '4. 趋势分析', 'number_generation': '5. 数字生成' } for module in GlobalConfig.MODULES: Button( self.left_panel, text=module_names[module], width=18, command=lambda m=module: self._on_module_button_click(m) ).pack(pady=3, padx=5, ipady=3) def _setup_center_area(self): """设置中间区域布局""" # 期号区 period_frame = Frame(self.center_frame, height=30, bd=1, relief='solid') period_frame.pack(fill='x', pady=(0, 5)) Label(period_frame, text="期号: ", font=('微软雅黑', 10)).pack(side='left') self.period_var = StringVar(value="2023001") Label(period_frame, textvariable=self.period_var, font=('微软雅黑', 10, 'bold')).pack(side='left') # 核心区 core_frame = Frame(self.center_frame, bd=1, relief='solid') core_frame.pack(fill='both', expand=True, pady=(0, 5)) # 核心区标题 Label(core_frame, text="核心区", font=('微软雅黑', 12, 'bold')).pack(anchor='w', padx=5, pady=2) # 核心数据展示 self.core_vars = { 'front_area': StringVar(), 'back_area': StringVar(), 'front_hot': StringVar(), 'front_cold': StringVar(), 'back_hot': StringVar(), 'back_cold': StringVar() } for label, var_name in [ ("前区:", 'front_area'), ("后区:", 'back_area'), ("前区热号:", 'front_hot'), ("前区冷号:", 'front_cold'), ("后区热号:", 'back_hot'), ("后区冷号:", 'back_cold') ]: frame = Frame(core_frame) frame.pack(fill='x', padx=5, pady=2) Label(frame, text=label, width=10, anchor='w').pack(side='left') # 添加容器Frame实现右边距2px entry_container = Frame(frame) entry_container.pack(side='left', fill='x', expand=True, padx=(0, 2)) entry = Entry(entry_container, textvariable=self.core_vars[var_name], font=('微软雅黑', 10), state='readonly', readonlybackground='#f0f0f0', relief='sunken', bd=1) entry.pack(fill='x', expand=True) # 动态区 dynamic_frame = Frame(self.center_frame, bd=1, relief='solid') dynamic_frame.pack(fill='both', expand=True) # 动态区标题框架 dynamic_header = Frame(dynamic_frame) dynamic_header.pack(fill='x', padx=5, pady=5) Label(dynamic_header, text="动态区", font=('微软雅黑', 12, 'bold')).pack(side='left') # 模块内容容器 self.module_content_frame = Frame(dynamic_frame) self.module_content_frame.pack(fill='both', expand=True, padx=5, pady=5) def _setup_right_panel(self): """设置右侧号码池布局""" # 号码池标题 pool_title_frame = Frame(self.right_panel) pool_title_frame.pack(f极ill='x', pady=5) Label(pool_title_frame, text="号码池", font=('微软雅黑', 12, 'bold')).pack(anchor='w') # 号码池内容区 pool_content = Frame(self.right_panel, bd=1, relief='solid') pool_content.pack(fill='both', expand=True, padx=5, pady=5) # 创建Canvas和Scrollbar canvas = Canvas(pool_content, highlightthickness=0) scrollbar = Scrollbar(pool_content, orient="vertical", command=canvas.yview) scrollable_frame = Frame(canvas) scrollable_frame.bind( "<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) canvas.create_window((0, 0), window=scrollable_frame, anchor="nw") canvas.configure(yscrollcommand=scrollbar.set) # 号码池项目 - 优化布局和样式 for label, var_name, row_id in GlobalConfig.UI_CONFIG: frame = Frame(scrollable_frame) frame.grid(row=row_id, column=极0, sticky='ew', padx=5, pady=2) # 左侧标签(固定宽度8字符)lbl = Label(frame, text=label, width=8, anchor='w') lbl.pack(side='left', padx=(0, 5)) # 标签右侧留5px间距 # 右侧输入框容器(带2px右边距)entry_container = Frame(frame) entry_container.pack(side='left', fill='x', expand=True, padx=(0, 2)) var = StringVar() self.pool_vars[var_name] = var entry = Entry(entry_container, textvariable=var, font=('微软雅黑', 9), state='readonly', readonlybackground='#f0f0f0', relief='sunken', bd=1) entry.pack(fill='x', expand=True) canvas.pack(side="left", fill="both", expand=True) scrollbar.pack(side="right", fill="y") # 底部按钮区 btn_frame = Frame(self.right_panel) btn_frame.pack(fill='x', pady=5) Button(btn_frame, text="整理", width=10, command=self._organize_data).pack(side='left', padx=5) Button(btn_frame, text="冻结", width=10, command=self._freeze_data).pack(side='left', padx=5) Button(btn_frame, text="导出", width=10).pack(side='left', padx=5) def _organize_data(self): """整理号码池数据""" organize_event = Event( event_id=int(time.time()), type=EventType.DATA_ORGANIZE, source='main_ui', target='pool' ) event_center.publish(organize_event) def _freeze_data(self): """冻结号码池数据""" freeze_event = Event( event_id=int(time.time()), type=EventType.DATA_FREEZE, source='main_ui', target='pool' ) event_center.publish(freeze_event) # 以下是新增/修改的方法 def _on_module_button_click(self, module: str): """完全重构的模块显示方法 - 嵌入主界面动态区""" self.status_var.set(f"打开 {module} 模块...") self.current_module = module # 清除之前的动态内容 if self.dynamic_content: self.dynamic_content.destroy() # 创建模块专属容器 self.dynamic_content = Frame(self.module_content_frame) self.dynamic_content.pack(fill='both', expand=True, padx=5, pady=5) # 顶部模块标签区 top_label_frame = Frame(self.dynamic_content) top_label_frame.pack(fill='x', pady=5) module_labels = { 'input_analysis': '1. 输入分析', 'combination_analysis': '2. 组合分析', 'follow_analysis': '3. 跟随分析', 'trend_analysis': '4. 趋势分析', 'number_generation': '5. 数字生成' } Label(top_label_frame, text=module_labels.get(module, module), font=('微软雅黑', 14, 'bold')).pack() # 内容区容器 content_frame = Frame(self.dynamic_content, bd=1, relief='solid') content_frame.pack(fill='both', expand=True, padx=5, pady=5) # 根据模块类型创建特定内容 if module == "input_analysis": self._create_input_analysis_content(content_frame) elif module == "combination_analysis": self._create_combination_analysis_content(content_frame) elif module == "follow_analysis": self._create_follow_analysis_content(content_frame) elif module == "trend_analysis": self._create_trend_analysis_content(content_frame) elif module == "number_generation": self._create_number_generation_content(content_frame) # 底部按钮区 bottom_frame = Frame(self.dynamic_content) bottom_frame.pack(pady=5, fill='x') Button(bottom_frame, text="运行", command=lambda: self._run_module(module)).pack(side='left', padx=5) Button(bottom_frame, text="清除", command=lambda: self._clear_module_data(module)).pack(side='left', padx=5) Button(bottom_frame, text="保存", command=lambda: self._save_module_data(module)).pack(side='left', padx=5) Button(bottom_frame, text="刷新", command=lambda: self._on_module_renovate(module)).pack(side='right', padx=5) def _create_ui_element(self, parent, label_text): """创建统一的UI元素(带右边距2px)""" frame = Frame(parent) frame.pack(fill='x', pady=2) # 标签固定宽度 Label(frame, text=label_text, width=12, anchor='w').pack(side='left') # 添加容器Frame实现右边距2px entry_container = Frame(frame) entry_container.pack(side='left', fill='x', expand=True, padx=(0, 2)) return entry_container def _create_input_analysis_content(self, parent: Frame): """创建输入分析模块的特定内容""" # 使用统一方法创建UI元素(带右边距2px) 这里修改
排除号码:(用户手动输入的号码)
前区:
后区:
推荐号码:(模块1收到主界面模块1传输过来“排除号码”的信息后,按照设计要求进行排除,生成推荐号码,在下面的对应的对话框里呈现出来,其号码池的前区和后区也要同步进行))
前区:
后区:
front_container = self._create_ui_element(parent, "前区号码 (1-35)😊
front_entry = Entry(front_container)
front_entry.pack(fill=‘x’) back_container = self._create_ui_element(parent, "后区号码 (1-12):") back_entry = Entry(back_container) back_entry.pack(fill='x') # 结果显示区 result_frame = Frame(parent) result_frame.pack(fill='both', expand=True, pady=5) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') result_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') result_text.pack(fill='both', expand=True) scrollbar.config(command=result_text.yview) # 保存对控件的引用 self.front_entry = front_entry self.back_entry = back_entry self.result_text = result_text def _create_combination_analysis_content(self, parent: Frame): """创建组合分析模块的特定内容""" content_frame = Frame(parent) content_frame.pack(fill='both', expand=True, padx=10, pady=10) # 使用统一方法创建UI元素(带右边距2px)front_hot_container = self._create_ui_element(content_frame, "前区热号:") front_hot_entry = Entry(front_hot_container) front_hot_entry.pack(fill='x') front_freq_container = self._create_ui_element(content_frame, "前数字频:") front_freq_entry = Entry(front_freq_container) front_freq_entry.pack(fill='x') front_freq_rec_container = self._create_ui_element(content_frame, "前频繁推:") front_freq_rec_entry = Entry(front_freq_rec_container) front极_freq_rec_entry.pack(fill='x') back_hot_container = self._create_ui_element(content_frame, "后区热号:") back_hot_entry = Entry(back_hot_container) back_hot_entry.pack(fill='x') back_freq_container = self._create_ui_element(content_frame, "后数字频:") back_freq_entry = Entry(back_freq_container) back_freq_entry.pack(fill='x') back_infreq_rec_container = self._create_ui_element(content_frame, "后低频推:") back_infreq_rec_entry = Entry(back_infreq_rec_container) back_infreq_rec_entry.pack(fill='x') # 结果显示区 result_frame = Frame(content_frame) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') result_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') result_text.pack(fill='both', expand=True) scrollbar.config(command=result_text.yview) # 保存对控件的引用 self.front_hot_entry = front_hot_entry self.front_freq_entry = front_freq_entry self.front_freq_rec_entry = front_freq_rec_entry self.back_hot_entry = back_hot_entry self.back_freq_entry = back_freq_entry self.back_infreq_rec_entry = back_infreq_rec_entry self.result_text = result_text def _create_follow_analysis_content(self, parent: Frame): """创建跟随分析模块的特定内容""" content_frame = Frame(parent) content_frame.pack(fill='both', expand=True, padx=10, pady=10) # 使用统一方法创建UI元素(带右边距2px)front_more_container = self._create_ui_element(content_frame, "前推荐多:") front_more_entry = Entry(front_more_container) front_more_entry.pack(fill='x') front_less_container = self._create_ui_element(content_frame, "前推荐少:") front_less_entry = Entry(front_less_container) front_less_entry.pack(fill='x') back_more_container = self._create_ui_element(content_frame, "后推荐多:") back_more_entry = Entry(back_more_container) back_more_entry.pack(fill='x') back_less_container = self._create_ui_element(content_frame, "后推荐少:") back_less_entry = Entry(back_less_container) back_less_entry.pack(fill='x') # 结果显示区 result_frame = Frame(content_frame) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') result_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') result_text.pack(fill='both', expand=True) scrollbar.config(command=result_text.yview) # 保存对控件的引用 self.front_more_entry = front_more_entry self.front_less_entry = front_less_entry self.back_more_entry = back_more_entry self.back_less_entry = back_less_entry self.result_text = result_text def _create_trend_analysis_content(self, parent: Frame): """创建趋势分析模块的特定内容""" content_frame = Frame(parent) content_frame.pack(fill='both', expand=True, padx=10, pady=10) # 使用统一方法创建UI元素(带右边距2px)sum_value_container = self._create_ui_element(content_frame, "和值:") sum_value_entry = Entry(sum_value_container) sum_value_entry.pack(fill='x') prime_ratio_container = self._create_ui_element(content_frame, "质合比:") prime_ratio_entry = Entry(prime_ratio_container) prime_ratio_entry.pack(fill='x') odd_even_ratio_container = self._create_ui_element(content_frame, "奇偶比:") odd_even_ratio_entry = Entry(odd_even_ratio_container) odd_even_ratio_entry.pack(fill='x') zone_rec_container = self._create_ui_element(content_frame, "断区推荐:") zone_rec_entry = Entry(zone_rec_container) zone_rec_entry.pack(fill='x') consec_rec_container = self._create_ui_element(content_frame, "连号推荐:") consec_rec_entry = Entry(consec_rec_container) consec_rec_entry.pack(fill='x') hot_cold_rec_container = self._create_ui_element(content_frame, "冷热推荐:") hot_cold_rec_entry = Entry(hot_cold_rec_container) hot_cold_rec_entry.pack(fill='x') hot_rec_container = self._create_ui_element(content_frame, "后区热号:") hot_rec_entry = Entry(hot_rec_container) hot_rec_entry.pack(fill='x') cold_rec_container = self._create_ui_element(content_frame, "后区冷号:") cold_rec_entry = Entry(cold_rec_container) cold_rec_entry.pack(fill='x') trend_rec_container = self._create_ui_element(content_frame, "趋势号:") trend_rec_entry = Entry(trend_rec_container) trend_rec_entry.pack(fill='x') # 结果显示区 result_frame = Frame(content_frame) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') result_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') result_text.pack(fill='both', expand=True) scrollbar.config(command=result_text.yview) # 保存对控件的引用 self.sum_value_entry = sum_value_entry self.prime_ratio_entry = prime_ratio_entry self.odd_even_ratio_entry = odd_even_ratio_entry self.zone_rec_entry = zone_rec_entry self.consec_rec_entry = consec_rec_entry self.hot_cold_rec_entry = hot_cold_rec_entry # 修复变量名拼写错误 self.hot_rec_entry = hot_rec_entry self.cold_rec_entry = cold_rec_entry self.trend_rec_entry = trend_rec_entry self.result_text = result_text def _create_number_generation_content(self, parent: Frame): """创建数字生成模块的特定内容""" content_frame = Frame(parent) content_frame.pack(fill='both', expand=True, padx=10, pady=10) # 胆码输入区 dan_frame = Frame(content_frame) dan_frame.pack(fill='x', pady=5) front_dan_container = self._create_ui_element(dan_frame, "前区胆码:") front_dan_entry = Entry(front_dan_container) front_dan_entry.pack(fill='x') back_dan_container = self._create_ui_element(dan_frame, "后区胆码:") back_dan_entry = Entry(back_dan_container) back_dan_entry.pack(fill='x') # 结果显示区 result_frame = Frame(content_frame) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') result_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') result_text.pack(fill='both', expand=True) scrollbar.config(command=result_text.yview) # 保存对控件的引用 self.front_dan_entry = front_dan_entry self.back_dan_entry = back_dan_entry self.result_text = result_text def _run_module(self, dialog_type: str): """运行模块""" run_event = Event( event_id=int(time.time()), type=EventType.MODULE_RUN, source='dialog_manager', target=dialog_type ) event_center.publish(run_event) def _clear_module_data(self, module: str): """清除模块数据""" if module == "input_analysis": self.front_entry.delete(0, 'end') self.back_entry.delete(0, 'end') self.result_text.delete(1.0, 'end') elif module == "combination_analysis": self.front_hot_entry.delete(0, 'end') self.front_freq_entry.delete(0, 'end') self.front_freq_rec_entry.delete(0, 'end') self.back_hot_entry.delete(0, 'end') self.back_freq_entry.delete(0, 'end') self.back_infreq_rec_entry.delete(0, 'end') self.result_text.delete(1.0, 'end') # 其他模块清除逻辑类似... def _save_module_data(self, module: str): """保存模块数据""" try: data = {} if module == "input_analysis": data['front'] = self.front_entry.get() data['back'] = self.back_entry.get() data['result'] = self.result_text.get(1.0, 'end') elif module == "combination_analysis": data['front_hot'] = self.front_hot_entry.get() data['front_freq'] = self.front_freq_entry.get() data['front_freq_rec'] = self.front_freq_rec_entry.get() data['back_hot'] = self.back_hot_entry.get() data['back_freq'] = self.back_freq_entry.get() data['back_infreq_rec'] = self.back_infreq_rec_entry.get() data['result'] = self.result_text.get(1.0, 'end') # 其他模块数据收集... filename = f"{module}_data.json" with open(filename, 'w', encoding='utf-8') as f: json.dump(data, f, indent=2, ensure_ascii=False) messagebox.showinfo("保存成功", f"数据已保存到{filename}") except Exception as e: messagebox.showerror("保存失败", str(e)) logging.error(f"保存数据失败: {str(e)}", exc_info=True) def _handle_module_complete(self, event: Event): self.status_var.set(f"{event.source} 模块运行完成") if hasattr(self, 'dynamic_text') and self.dynamic_text: self.dynamic_text.insert('end', f"\n{event.source} 模块已完成分析\n") def _run_module(self): """运行动态区模块""" if hasattr(self, 'current_module') and self.current_module: run_event = Event( event_id=int(time.time()), type=EventType.MODULE_RUN, source='main_ui', target=self.current_module ) event_center.publish(run_event) else: messagebox.showinfo("提示", "请先打开一个模块") def _clear_dynamic_content(self): """清除动态区内容""" if hasattr(self, 'dynamic_text') and self.dynamic_text: self.dynamic_text.delete(1.0, 'end') def _save_dynamic_content(self): """保存动态区内容""" if hasattr(self, 'dynamic_text') and self.dynamic_text: content = self.dynamic_text.get(1.0, 'end') try: with open("dynamic_content.txt", "w", encoding="utf-8") as f: f.write(content) messagebox.showinfo("保存成功", "动态区内容已保存到dynamic_content.txt") except Exception as e: messagebox.showerror("保存失败", str(e)) def _refresh_dynamic(self): """刷新动态区""" if self.current_module: self._on_module_button_click(self.current_module) # 添加动态内容创建方法 def _create_input_analysis_content(self): """创建输入分析模块的动态内容""" 这里修改
排除号码:(用户手动输入的号码)
前区:
后区:
推荐号码:(模块1收到主界面模块1传输过来“排除号码”的信息后,按照设计要求进行排除,生成推荐号码,在下面的对应的对话框里呈现出来,其号码池的前区和后区也要同步进行))
前区:
后区:
self.dynamic_content = Frame(self.module_content_frame)
self.dynamic_content.pack(fill=‘both’, expand=True) # 前区号码输入 front_frame = Frame(self.dynamic_content) front_frame.pack(fill='x', pady=5) Label(front_frame, text="前区号码 (1-35):").pack(side='left') self.front_entry = Entry(front_frame, width=30) self.front_entry.pack(side='left', padx=5) # 后区号码输入 back_frame = Frame(self.dynamic_content) back_frame.pack(fill='x', pady=5) Label(back_frame, text="后区号码 (1-12):").pack(side='left') self.back_entry = Entry(back_frame, width=30) self.back_entry.pack(side='left', padx=5) # 结果显示区 result_frame = Frame(self.dynamic_content) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') self.dynamic_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') self.dynamic_text.pack(fill='both', expand=True) scrollbar.config(command=self.dynamic_text.yview) def _create_combination_analysis_content(self): """创建组合分析模块的动态内容""" self.dynamic_content = Frame(self.module_content_frame) self.dynamic_content.pack(fill='both', expand=True) # 组合分析内容 labels = [ "前数字频:", "前数字缺:", "后数字频:", "后数字缺:", "前频繁推:", "后低频推:", "生组合数:", "未组合码:" ] for label in labels: frame = Frame(self.dynamic_content) frame.pack(fill='x', pady=2) Label(frame, text=label, width=12, anchor='w').pack(side='left') entry = Entry(frame, width=30) entry.pack(side='left', padx=5) setattr(self, f"{label.replace(':', '')}_entry", entry) # 结果显示区 result_frame = Frame(self.dynamic_content) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') self.dynamic_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') self.dynamic_text.pack(fill='both', expand=True) scrollbar.config(command=self.dynamic_text.yview) def _create_follow_analysis_content(self): """创建跟随分析模块的动态内容""" self.dynamic_content = Frame(self.module_content_frame) self.dynamic_content.pack(fill='both', expand=True) # 跟随分析内容 labels = [ "前推荐多:", "前推荐少:", "后推荐多:", "后推荐少:" ] for label in labels: frame = Frame(self.dynamic_content) frame.pack(fill='x', pady=2) Label(frame, text=label, width=12, anchor='w').pack(side='left') entry = Entry(frame, width=30) entry.pack(side='left', padx=5) setattr(self, f"{label.replace(':', '')}_entry", entry) # 结果显示区 result_frame = Frame(self.dynamic_content) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') self.dynamic_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') self.dynamic_text.pack(fill='both', expand=True) scrollbar.config(command=self.dynamic_text.yview) def _create_trend_analysis_content(self): """创建趋势分析模块的动态内容""" self.dynamic_content = Frame(self.module_content_frame) self.dynamic_content.pack(fill='both', expand=True) # 趋势分析内容 labels = [ "和值:", "质合比:", "奇偶比:", "断区推荐:", "连号推荐:", "冷热推荐:", "后区热号:", "后区冷号:", "趋势号:" ] for label in labels: frame = Frame(self.dynamic_content) frame.pack(fill='x', pady=2) Label(frame, text=label, width=12, anchor='w').pack(side='left') entry = Entry(frame, width=30) entry.pack(side='left', padx=5) setattr(self, f"{label.replace(':', '')}_entry", entry) # 结果显示区 result_frame = Frame(self.dynamic_content) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') self.dynamic_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') self.dynamic_text.pack(fill='both', expand=True) scrollbar.config(command=self.dynamic_text.yview) def _create_number_generation_content(self): """创建数字生成模块的动态内容""" self.dynamic_content = Frame(self.module_content_frame) self.dynamic_content.pack(fill='both', expand=True) # 数字生成内容 # 胆码输入区 dan_frame = Frame(self.dynamic_content) dan_frame.pack(fill='x', pady=5) Label(dan_frame, text="前区胆码:").pack(side='left') self.front_dan_entry = Entry(dan_frame, width=15) self.front_dan_entry.pack(side='left', padx=5) Label(dan_frame, text="后区胆码:").pack(side='left') self.back_dan_entry = Entry(dan_frame, width=15) self.back_dan_entry.pack(side='left', padx=5) # 结果显示区 result_frame = Frame(self.dynamic_content) result_frame.pack(fill='both', expand=True) scrollbar = Scrollbar(result_frame) scrollbar.pack(side='right', fill='y') self.dynamic_text = Text(result_frame, yscrollcommand=scrollbar.set, wrap='word') self.dynamic_text.pack(fill='both', expand=True) scrollbar.config(command=self.dynamic_text.yview) # 添加事件处理方法 def _handle_ui_update(self, event: Event): """处理UI更新事件""" if not event.data or 'update_type' not in event.data: return update_type = event.data['update_type'] data = event.data.get('data', {}) # 处理核心变量更新 if update_type == 'organized_data': # 确保所有核心变量已初始化 if not hasattr(self, 'core_vars'): self.core_vars = { 'front_area': StringVar(), 'back_area': StringVar(), 'front_hot': StringVar(), 'front_cold': StringVar(), 'back_hot': StringVar(), 'back_cold': StringVar() } # 更新界面变量 self.core_vars['front_area'].set(str(data.get('front_numbers', []))) self.core_vars['back_area'].set(str(data.get('back_numbers', []))) self.core_vars['front_hot'].set(str(data.get('front_hot', []))) self.core_vars['front_cold'].set(str(data.get('front_cold', []))) self.core_vars['back_hot'].set(str(data.get('back_hot', []))) self.core_vars['back_cold'].set(str(data.get('back_cold', [])))
最新发布