精选稿件 | Passion!如何从零开始制作一个TBtools插件(Python版)

文摘   2024-10-25 07:41   广东  

关注我们并在后台回复 “进群”,即可加入农心生信工作室学习交流群,群内不定时分享源代码及示例文件,并在线交流答疑。我们在等你!

由于微信改版,乱序推送,很多朋友反映收不到公众号推文。快跟着图片步骤,将公众号设为星标,不错过每一条精彩内容!


本公众号已开通留言功能,欢迎大家直接在文末留言交流!



写在前面

农心生信已经陆陆续续开发了多个TBtools插件了,上个月陈老师特意邀请我们分享一下python的TBtools插件制作流程,其实陈老师已经有一个很详细的TBtools插件制作的教程了(手把手 | TBtools 插件开发入门~完全指南),但他认为每个人都有自己的制作心得,值得分享。这个月总算稍稍忙完了一堆事,正好抽空,用一个python脚本,分享一下如何制作基于Python实现的TBtools插件

准备工作

因为我们要制作一个Windows系统下基于Python实现的TBtools插件,因此首先需要在电脑上安装一个Windows版本的Python并保证添加进环境变量。直接在python官网下载对应版本即可。在这里我们安装的是Python 3.11.2。

然后打开cmd,安装两个依赖的模块:

pip install virtualenv
pip install pyinstaller

安装好后,我们先使用virtualenv模块,virtualenv模块可以创造一个python的隔离环境,因为很多人在使用python过程中会安装越来越多的模块,不创造一个python的隔离环境,打包成插件后,插件会非常大。所以我墙裂建议大家使用virtualenv模块创造一个python的隔离环境。在这里,我们在E:\test下创造新环境new_env:

virtualenv new_env

pyinstaller模块的功能暂且按下不表,稍后会用到。

插件脚本

这几天看了付航的脱口秀,被一句“Passion”深深洗脑,所以 ,写了一个毫无意义的passion脚本,虽然没有意义,但可以输入文件、输出文件和选择模式,足够做一个插件。脚本内容如下:

import argparse

class SayPassionToWorldApp:
    def __init__(self, input_file, output_file,mode_type):
        self.input_file = input_file
        self.output_file = output_file
        self.mode_type=mode_type

    def read_mode(self):
        with open(self.input_file,'r')as file:
            return

    def write_message(self, message):
        with open(self.output_file,'w')as file:
            file.write(message)

    def run(self):
        if self.mode_type =='great':
            message ='Passion'
        else:
            message ='F**king, and passion again'
        self.write_message(message)

def main():
    parser = argparse.ArgumentParser(description='Say passion to world !!!')
    parser.add_argument('--input_file',type=str,help='The input file path')
    parser.add_argument('--output_file',type=str,help='The output file path')
    parser.add_argument('--mode',type=str, default="great",help='')

    args = parser.parse_args()

    app =SayPassionToWorldApp(args.input_file, args.output_file,args.mode)
    app.run()

if __name__ =='__main__':
    main()

脚本的功能是随意输入一个文件(这个文件没任何意义),模式选择有两种,一个是great,一个bad,不同模式下,输出文件会有不同内容。

打开TBtools,打开Plugin Creater插件(没有的直接去商店安装即可),界面如下:

我们先设计GUI界面,布局如下:、

这样的布局下,GUI界面会呈现下面的效果:

这里插件开发所用到的各种开发元件以及元件布局,陈老师之前已经有一篇很详细的推文介绍(手把手 | TBtools 插件开发入门~完全指南),这里不再赘述。我们今天主要介绍如何把一个python脚本打包成一个插件的实战过程。

下面我们点开上方这个标志:

弹出这样一个文本框:

把脚本直接粘贴进去,并给脚本命名:

根据脚本内容,在Arg一栏添加对应参数:

接下来,我们需要运行这个脚本,因此需要python解释器,你需要告诉TBtools在你的电脑上python在哪里。我们前面已经创造了一个python的孤立环境new_env,new_env所在就是python解释器目录:

上面的路径输入正确后,插件制作就完成了。我们看看整体设计和布局:

这个时候点击Export Plugin,保存插件即可。打包完成,由于我们创建了孤立环境,插件大小仅仅几百kb

制作插件(方法2)

方法2是直接将python脚本打包成一个exe,这里用到了PyInstaller。PyInstaller将Python程序生成可直接运行的程序,这个程序就可以被分发到对应的 Windows 或 Mac OS X 平台上运行。

同方法1,还是推荐大家使用python的隔离环境。这里,需要打开cmd,在E:\test下,用命令行激活new_env,:

.\new_env\Scripts\activate

将我们的passion脚本,保存为SayPassionToWorld.py,依旧在E:\test下。使用下面的命令打包:

pyinstaller -D .\SayPassionToWorld.py

成果打包后,E:\test会有下面两个文件夹:

接下来,我们重新进入Plugin Creater插件界面,方法1中的GUI界面设计不需要更改,而且不需要把脚本粘贴进文本框,唯一需要更改的是解释器的路径,按下图修改:

此时,插件也制作完成。我们看看整体设计和布局:

同样,点击Export Plugin,保存插件即可。

两种方法亲测都可以制作出成功实现功能的插件!

写在最后

看完付航喜剧之王总决赛的舞台,难毕业的老博士生心里还是有了一些波动。

希望我们每个人都能做自己剧本里的主角,勇敢、坚强、激情!

不,那不是激情

那是Passion!!!!!!!!!!!!!!!!!!!!


END

编辑 | Narcissus

供稿 | Deeecade

审核 | 农心生信工作室


生信石头
记录和分享生信学习经验和数据处理技巧
 最新文章