“ 很多小伙伴都想自己开发 KiCad 插件,但不知从何入手。本文由华秋电子的另一位 KiCad 开发者波波同学撰写,分享了如何快速搭建环境,并开发一个简单的插件。 ”

目标
编写一个 KiCad 9 的 GUI 插件来显示 PCB 对应图层。通过这个简单的示例来
了解 KiCad 插件开发的过程。
具体实现需要了解 Python,KiCad 的 Pcbnew API 和 wxFormbuilder。
环境准备
确保有一个适合开发KiCad插件的环境,通常意味着安装了 KiCad 软件,VSCode 编辑器(支持 python 编码)和w xFormbuilder。
[VSCode Windows (x64)下载]:
https://code.visualstudio.com/download
[wxFormbuilder下载]:
https://github.com/wxFormBuilder/wxFormBuilder/releases
使用 VSCode 配置 Python 环境
1、 安装 VSCode 后,在 VSCode 的应用商店(快捷键:Ctrl + Shift + X)里搜索 Python 插件,并安装。如下图:

2、找到 KiCad9 安装路径下的 Python 解释器,选择 Python.exe。
按键盘快捷键:F1(或者Ctrl+Shift+P),在 VSCode 界面上方会显示命令框,在命令栏中输入"Python:Select Interpreter",然后选择"Enter interpreter path"。通过路径发现找到 KiCad 的 Python 解释器(根据自己安装的 KiCad 路径找到 bin 目录下的 python.exe)。
KiCad Python解释器的路径在安装路径如下:

3、检查Python环境是否配置成功。
建立一个main.py文件,输入代码。
print("Hello World!")
Vscode显示如下,界面右下方显示有Python版本(即Kicad自带的Python解释器):

点击“Python Debugger:Debuge Python File”,在 “terminal” 中出现 “Hello World!”,则表示 KiCad 的 Python 环境配置成功。然后就可以写 Python 代码了。

wxformbuilder 的使用(Python 界面开发)
1、wxformbuilder界面基本介绍
wxFormBuilder的界面如下:

其中
项目树:包含所有用到的控件,布局器。通过项目树可以实现对项目布局结构的调整和编辑对象的选择。
控件及工具栏:提供用于图形用户界面所需要使用的各种控件和布局器。
工作区:可视化的图形用户界面,提供所见即所得的设计区域。
配置区:用于配置项目属性,控件属性,布局器属性以及需要绑定的事件处理。
生成代码模板区:只做展示用于生成图形用户界面的对应代码模板,实际使用中,不要随意修改。
2、wxFormBuilder创建工程。
打开wxFormBuilder,选择“File -> New Project ”创建新项目。在“控件及工具栏”中选择“Forms”页面,添加一个 Frame。

3、添加布局器
点击 wxformbuilder 上方的标签 “Layout”,并点击标签下方的第一个图标 “wxBoxSizer”。添加一个只有以列控件布局的布局器。但是窗口左边的目录树有变化了,窗体下多了一个布局器。

4、放置控件
点击wxformbuilder上方的标签“Common”,并点击标签图标 “wxStaticText” 添加控件,在“Properties”中的“label”中修改文本内容。

点击标签“Data”,并点击图标“wxDataViewListCtrl”,修改名称为 “data_view_list”。这样,窗体设置上就会多出文本标签、列表框。

5、保存
Python 代码。
点击选中左边树形图最上面的图标,即选中工程。修改工程属性,将name和file修改为“ui_main_frame”,选择“code_generation”标签为Python,即可出生成文件名为“ui_main_frame.py”的wxPython代码。如下图:

点击“file”标签下的 “generate code”,即生成一个 GUI 界面的 Python 文件。代码如下:
# -*- coding: utf-8 -*-############################################################################# Python code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)## http://www.wxformbuilder.org/#### PLEASE DO *NOT* EDIT THIS FILE!###########################################################################import wximport wx.xrcimport wx.dataview############################################################################# Class UiMainFrame###########################################################################class UiMainFrame ( wx.Frame ):def __init__( self, parent ):wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,700 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )bSizer3 = wx.BoxSizer( wx.VERTICAL )self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, u"通过单击或双击,显示PCB中的对应层", wx.DefaultPosition, wx.DefaultSize, 0 )self.m_staticText1.Wrap( -1 )bSizer3.Add( self.m_staticText1, 0, wx.ALIGN_CENTER|wx.ALL, 5 )self.data_view_list = wx.dataview.DataViewListCtrl( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )bSizer3.Add( self.data_view_list, 1, wx.ALL|wx.EXPAND, 5 )self.SetSizer( bSizer3 )self.Layout()self.Centre( wx.BOTH )def __del__( self ):pass
全部0条评论
快来发表一下你的评论吧 !