""" 工具模块初始化脚本 功能:向Axis Innovators Box注册自定义工具类别和工具项 作者:tzdwindows 7 版本:1.1 """ from com.axis.innovators.box.python import PyLocalSide from javax.swing import AbstractAction, JFrame,JDialog, JLabel, JButton, JPanel, JOptionPane from java.awt import BorderLayout, Dimension from java.awt.event import ActionListener class MyAction(AbstractAction): def actionPerformed(self, event): """工具项点击事件处理""" print("[DEBUG] Tool item clicked! Event source:", event.getSource()) # 创建 JDialog 作为子窗口 parent_frame = event.getSource().getTopLevelAncestor() # 获取父窗口 dialog = JDialog(parent_frame, u"工具面板", True) # True 表示模态对话框 dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE) # 关闭时释放资源 dialog.setSize(300, 200) dialog.setLocationRelativeTo(parent_frame) # 居中于父窗口 # 创建面板并设置布局 panel = JPanel() panel.layout = BorderLayout() # 使用边界布局 # 添加标签 label = JLabel(u"这是工具项的子面板") panel.add(label, BorderLayout.CENTER) # 添加关闭按钮 close_btn = JButton(u"关闭") close_btn.addActionListener(lambda e: dialog.dispose()) # 点击关闭窗口 panel.add(close_btn, BorderLayout.SOUTH) # 将面板添加到窗口 dialog.add(panel) dialog.visible = True # 显示窗口 def onStartup(): """ 系统启动时自动执行的初始化逻辑 功能: 1. 创建工具类别 2. 创建工具项并绑定动作 3. 注册到系统全局工具集 """ print('[INFO] 正在初始化自定义工具...') # -------------------------- # 创建工具类别(参数顺序:显示名称,图标资源名,描述) # -------------------------- tool_category = PyLocalSide.getToolCategory( u"数据分析工具", # 显示名称(GUI可见) u"analytics_icon.png", # 图标文件名(需存在于资源目录) u"高级数据分析功能集合" # 悬停提示描述 ) # -------------------------- # 创建工具项(参数顺序:显示名称,图标,描述,ID,动作对象) # -------------------------- tool_action = MyAction() tool_item = PyLocalSide.getToolItem( u"数据可视化", # 工具项显示名称 u"chart_icon.png", # 工具项图标 u"生成交互式数据图表", # 工具项描述 1001, # 工具项唯一ID(需在配置中统一管理) tool_action # 点击触发的动作 ) tool_category.addTool(tool_item) # -------------------------- # 注册工具类别到系统(参数:类别对象,全局唯一注册名称) # -------------------------- PyLocalSide.addToolCategory( tool_category, u"custom_module::data_analysis_tools" # 推荐命名规则:模块名::功能名 ) print('[SUCCESS] 工具类别注册成功') if __name__ == '__main__': result = 0 errorResult = "" # 确保Jython运行时可以访问onStartup函数 # 原理:将函数显式绑定到全局字典 globals()['onStartup'] = onStartup