Linux 图形化编程GTK3.0 快速入门之布局

GTK3.0 布局之水平布局

核心语法:

水平布局容器:

水平布局容器的创建:
GtkWidget *gtk_hbox_new( gboolean homogeneous,  gint spacing );

homogeneous:容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE )
spacing:控件之间的间隔( 以像素点为单位 ),gint相当于 C语言的int
返回值:水平布局控件指针


容器添加添加控件:
void gtk_container_add(GtkContainer *container, GtkWidget *widget);

container:容纳控件的容器
widget:要添加的控件


显示容器上所有控件
void gtk_widget_show_all(GtkWidget *widget);
widget:需要显示的控件

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>/*** 基于初始化图形库* 添加相关功能: 水平布局 * * 细节要求:为水平布局添加二个Button 按钮* * * */static void print_hello(GtkWidget *widget, gpointer data) {g_print("Hello World\n");
}int main(int argc, char *argv[]) {GtkWidget *window;GtkWidget *button;gtk_init(&argc, &argv); // gtk 初始化window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数// gkt 水平布局组件初始化化GtkWidget *hbox = gtk_hbox_new(TRUE, 10);// 声明button1 组件GtkWidget *button1 = gtk_button_new_with_label("按钮一"); //  gtk Button 实例化g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button2 组件GtkWidget *button2 = gtk_button_new_with_label("按钮二"); //  gtk Button 实例化g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 水平布局添加Button  组件gtk_container_add(GTK_CONTAINER(hbox), button1);gtk_container_add(GTK_CONTAINER(hbox), button2);// 把水平布局容器添加到窗口gtk_container_add(GTK_CONTAINER(window), hbox); gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件gtk_main(); //gtk 主事件循环开启return 0;
}

效果截图:

GTK3.0 布局之垂直布局

核心语法:

垂直布局容器的创建:
GtkWidget *gtk_vbox_new( gboolean homogeneous,  gint spacing );

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>/*** 基于初始化图形库* 添加相关功能: 垂直布局 * * 细节要求:为垂直布局添加二个Button 按钮* * * */static void print_hello(GtkWidget *widget, gpointer data) {g_print("Hello World\n");
}int main(int argc, char *argv[]) {GtkWidget *window;GtkWidget *button;gtk_init(&argc, &argv); // gtk 初始化window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数// gkt 垂直布局组件初始化化GtkWidget *vbox = gtk_vbox_new(TRUE, 10);// 声明button1 组件GtkWidget *button1 = gtk_button_new_with_label("按钮一"); //  gtk Button 实例化g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button2 组件GtkWidget *button2 = gtk_button_new_with_label("按钮二"); //  gtk Button 实例化g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 水平布局添加Button  组件gtk_container_add(GTK_CONTAINER(vbox), button1);gtk_container_add(GTK_CONTAINER(vbox), button2);// 把水平布局容器添加到窗口gtk_container_add(GTK_CONTAINER(window), vbox); gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件gtk_main(); //gtk 主事件循环开启return 0;
}

效果截图:

GTK3.0 布局之表格布局

核心语法:

表格布局容器的创建:
GtkWidget *gtk_table_new( guint rows, guint columns, gboolean homogeneous );

rows: 行数
coumns: 列数
homogeneous:容器内表格的大小是否相等
返回值:表格布局容器指针

布局容器添加控件:
void gtk_table_attach_defaults(GtkTable *table, GtkWidget *widget,guint left_attach,guint right_attach,guint top_attach,guint bottom_attach );

table:  容纳控件的容器 
widget: 要添加的控件

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>/*** 基于初始化图形库* 添加相关功能: 表格布局* * 细节要求:为表格布局第一行添加二个Button 按钮*         为表格布局第一行添加一个Button 按钮* * * */static void print_hello(GtkWidget *widget, gpointer data) {g_print("Hello World\n");
}int main(int argc, char *argv[]) {GtkWidget *window;GtkWidget *button;gtk_init(&argc, &argv); // gtk 初始化window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数// gkt 表格布局组件初始化化GtkWidget *table = gtk_table_new(2, 2, TRUE); // 声明button1 组件GtkWidget *button1 = gtk_button_new_with_label("按钮一"); //  gtk Button 实例化g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button2 组件GtkWidget *button2 = gtk_button_new_with_label("按钮二"); //  gtk Button 实例化g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button3 组件GtkWidget *button3 = gtk_button_new_with_label("按钮一"); //  gtk Button 实例化g_signal_connect(button3, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 表格布局添加Button  组件gtk_table_attach_defaults(GTK_TABLE(table), button1, 0, 1, 0, 1);gtk_table_attach_defaults(GTK_TABLE(table), button2, 1, 2, 0, 1);gtk_table_attach_defaults(GTK_TABLE(table), button3, 0, 2, 1, 2);// 把表格布局容器添加到窗口gtk_container_add(GTK_CONTAINER(window), table); gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件gtk_main(); //gtk 主事件循环开启return 0;
}

效果截图:

GTK3.0 布局之固定布局

核心语法:

固定布局的创建:
GtkWidget *gtk_fixed_new(void);
返回值:固定布局容器指针


固定布局容器添加控件:
void gtk_fixed_put( GtkFixed *fixed,GtkWidget *widget,gint x,gint y );

fixed:容纳控件的容器
widget:要添加的控件

x, y:控件摆放位置的起点坐标,如下图:

设置控件的大小( 宽和高 ):
void gtk_widget_set_size_request(GtkWidget *widget,gint width,gint height );

widget:需要设置的控件
width:宽度
height:高度


移动固定布局里控件的位置:
void gtk_fixed_move(   GtkFixed *fixed,GtkWidget *widget,gint x,gint y);

fixed:固定布局容器
widget:需要移动的控件
x, y: 移动的位置

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>/*** 基于初始化图形库* 添加相关功能: 固定布局* * 细节要求:为固定布局左上角添加二个Button 按钮, 距离窗口(5, 10)*         为固定布局右下角添加一个Button 按钮, 距离窗口(200, 200)* * * */static void print_hello(GtkWidget *widget, gpointer data) {g_print("Hello World\n");
}int main(int argc, char *argv[]) {GtkWidget *window;gtk_init(&argc, &argv); // gtk 初始化window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数// gkt 固定布局组件初始化化GtkWidget *fix = gtk_fixed_new(); // 声明button1 组件GtkWidget *button1 = gtk_button_new_with_label("左上角"); //  gtk Button 实例化g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button2 组件GtkWidget *button2 = gtk_button_new_with_label("右下角"); //  gtk Button 实例化g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 固定布局添加Button  组件gtk_fixed_put(GTK_FIXED(fix), button1, 5, 10);gtk_fixed_put(GTK_FIXED(fix), button2, 200, 200);// 把表格布局容器添加到窗口gtk_container_add(GTK_CONTAINER(window), fix); gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件gtk_main(); //gtk 主事件循环开启return 0;
}

效果截图:

GTK3.0 布局实战之计算器

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>/*** 基于初始化图形库* 添加相关功能: 通过表格布局,实现计算器布局* * 细节要求: 基于windows 11 系统计算器实现布局.*         * * * */static void print_hello(GtkWidget *widget, gpointer data) {g_print("Hello World\n");
}int main(int argc, char *argv[])
{GtkWidget *window;gtk_init(&argc, &argv); // gtk 初始化window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数// gkt 表格布局组件初始化化GtkWidget *table = gtk_table_new(2, 2, TRUE); ; // 行编辑的操作GtkWidget *entry = gtk_entry_new();		// 行编辑的创建gtk_entry_set_text(GTK_ENTRY(entry), NULL);	// 给行编辑设置内容gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE);// 设置行编辑不允许编辑,只做显示用// 声明button1 组件GtkWidget *button1 = gtk_button_new_with_label("1"); //  gtk Button 实例化g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button2 组件GtkWidget *button2 = gtk_button_new_with_label("2"); //  gtk Button 实例化g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button3 组件GtkWidget *button3 = gtk_button_new_with_label("3"); //  gtk Button 实例化g_signal_connect(button3, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button4 组件GtkWidget *button4 = gtk_button_new_with_label("+"); //  gtk Button 实例化g_signal_connect(button4, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button5 组件GtkWidget *button5 = gtk_button_new_with_label("4"); //  gtk Button 实例化g_signal_connect(button5, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button6 组件GtkWidget *button6 = gtk_button_new_with_label("5"); //  gtk Button 实例化g_signal_connect(button6, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button7 组件GtkWidget *button7 = gtk_button_new_with_label("6"); //  gtk Button 实例化g_signal_connect(button7, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button8 组件GtkWidget *button8 = gtk_button_new_with_label("-"); //  gtk Button 实例化g_signal_connect(button8, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button9 组件GtkWidget *button9 = gtk_button_new_with_label("7"); //  gtk Button 实例化g_signal_connect(button9, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button10 组件GtkWidget *button10 = gtk_button_new_with_label("8"); //  gtk Button 实例化g_signal_connect(button10, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button11 组件GtkWidget *button11 = gtk_button_new_with_label("9"); //  gtk Button 实例化g_signal_connect(button11, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button12 组件GtkWidget *button12 = gtk_button_new_with_label("*"); //  gtk Button 实例化g_signal_connect(button12, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button13 组件GtkWidget *button13 = gtk_button_new_with_label("0"); //  gtk Button 实例化g_signal_connect(button13, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button14 组件GtkWidget *button14 = gtk_button_new_with_label("C"); //  gtk Button 实例化g_signal_connect(button14, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button15 组件GtkWidget *button15 = gtk_button_new_with_label("="); //  gtk Button 实例化g_signal_connect(button15, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 声明button12 组件GtkWidget *button16 = gtk_button_new_with_label("/"); //  gtk Button 实例化g_signal_connect(button16, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数// 表格布局添加Button  组件gtk_table_attach_defaults(GTK_TABLE(table), entry,  0, 4, 0, 1);// 表格布局添加Button  组件gtk_table_attach_defaults(GTK_TABLE(table), button1, 0, 1, 1, 2);gtk_table_attach_defaults(GTK_TABLE(table), button2, 1, 2, 1, 2);gtk_table_attach_defaults(GTK_TABLE(table), button3, 2, 3, 1, 2);gtk_table_attach_defaults(GTK_TABLE(table), button4, 3, 4, 1, 2);gtk_table_attach_defaults(GTK_TABLE(table), button5, 0, 1, 2, 3);gtk_table_attach_defaults(GTK_TABLE(table), button6, 1, 2, 2, 3);gtk_table_attach_defaults(GTK_TABLE(table), button7, 2, 3, 2, 3);gtk_table_attach_defaults(GTK_TABLE(table), button8, 3, 4, 2, 3);gtk_table_attach_defaults(GTK_TABLE(table), button9,  0, 1, 3, 4);gtk_table_attach_defaults(GTK_TABLE(table), button10, 1, 2, 3, 4);gtk_table_attach_defaults(GTK_TABLE(table), button11, 2, 3, 3, 4);gtk_table_attach_defaults(GTK_TABLE(table), button12, 3, 4, 3, 4);gtk_table_attach_defaults(GTK_TABLE(table), button13,  0, 1, 4, 5);gtk_table_attach_defaults(GTK_TABLE(table), button14, 1, 2, 4, 5);gtk_table_attach_defaults(GTK_TABLE(table), button15, 2, 3, 4, 5);gtk_table_attach_defaults(GTK_TABLE(table), button16, 3, 4, 4, 5);// 把表格布局容器添加到窗口gtk_container_add(GTK_CONTAINER(window), table); gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件gtk_main(); //gtk 主事件循环开启return 0;
}

效果截图:

GTK 官方文档和Demo 安装和查看 

1、安装GTK3.0 官方文档,请执行如下指令

sudo apt-get install devhelp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qemu 模拟 Mini2440 扩展SDRAM 64M 到 128M,256M(三)

1. Mini2440 最大支持的SDRAM 是128M+128M MINI2440 板子的内存是由两片64M大小的SDRAM组成,所以实际内存有128M。分别连接到芯片的BANK6和BANK7。从这个图可以看出 Mini2440 最大支持的SDRAM 是128M+128M,我们能不能利用 QEMU 直接给你模拟干满到 256M呢?各位看官看我的操作…

Postman 请求参数传递指南:Query、Path和Body

Postman 作为一个功能强大的工具&#xff0c;极大地简化了 API 测试和调试的过程&#xff0c;提供了发送请求和检查响应的直接方法。本文将着重介绍如何在 Postman 中高效地处理请求参数&#xff0c;以提高 API 测试和开发的便利性。 1、解析请求参数 首先&#xff0c;我们需要…

Linux下调试代码——gdb的使用

1. 文件准备&#xff1a; 测试代码&#xff1a; Makefile文件&#xff1a; 执行结果&#xff1a; 此时&#xff0c;我们的结果是存在问题的&#xff0c;即最终结果少了100。现在我们用gdb来调试它。 我们发现我们还没有安装gdb&#xff0c;这里安装一下。 2. 环境准备&#…

棱镜七彩荣获CNNVD两项大奖,专业能力与贡献再获认可!

6月18日&#xff0c;国家信息安全漏洞库&#xff08;CNNVD&#xff09;2023年度工作总结暨优秀表彰大会在中国信息安全测评中心成功举办。棱镜七彩凭借在漏洞方面的突出贡献和出色表现&#xff0c;被授予“2023年度优秀技术支撑单位”与“2023年度最佳新秀奖”。 优秀技术支撑单…

人工智能无法修复自动化已经破坏的东西

人工智能无法修复自动化已经破坏的东西 没错&#xff0c;如今不断涌现出“我们日益恶化的反乌托邦的快照”之类的故事&#xff0c;但这篇来自行业杂志《美国银行家》(American Banker)的文章却脱颖而出。这篇文章揭示了企业人工智能的一个新的前沿用例:在呼叫中心的工作人员被…

2024请收好这一份全面--详细的AI产品经理从业指南

前言 入行人工智能领域这段时间以来&#xff0c;从零到一把AI推荐系统产品化搭建了起来&#xff0c;也与很多同行AI产品经理小伙伴建立了联系。AI产品经理工作内容各异&#xff0c;不同AI产品化生命周期中更是大为不同&#xff0c;但对想入行AI产品经理的小伙伴来讲&#xff0…

▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch4 值迭代 与 策略迭代 【动态规划 算法】

PPT 截取必要信息。 课程网站做习题。总体 MOOC 过一遍 1、视频 学堂在线 习题 2、过 电子书 补充 【下载&#xff1a; 本章 PDF 电子书 GitHub】 [又看了一遍视频。原来第一次跳过了好多内容。。。] 3、总体 MOOC 过一遍 习题 学堂在线 课程页面链接 中国大学MOOC 课程页面链…

上市公司-社会责任报告、ESG报告文本(2006-2023年)

上市公司社会责任报告是企业对外公布的一份关于其社会责任实践和成果的详细文件&#xff0c;涵盖环境保护、社会贡献和公司治理等方面的表现。通常包含公司在减少环境影响、提升社会福祉、维护员工权益、促进社区发展以及确保透明和道德的管理实践等方面的信息和数据。有助于了…

滑动窗口练习1-长度最小的子数组

1.题目链接&#xff1a;209.长度最小的子数组 2.题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条…

聊聊分布式集群的基本概念

在当前主流的分布式架构中,各种各样的集群技术几乎成了任何想要提升系统稳定性和处理能力的团队的必备技能。虽然各种中间件和系统都有让人看似眼花缭乱的集群实现方案,但其背后仍然逃不过一些核心的技术概念,我会结合几个我比较熟悉的中间件,简单聊一下我对集群的理解: …

zlib安装教程(Windows)

开源项目地址&#xff1a;madler/zlib: A massively spiffy yet delicately unobtrusive compression library. (github.com) 下载代码 可以选择git clone 或直接下载release包 Releases madler/zlib (github.com) git clone https://github.com/madler/zlib.git release…

被拷打已老实!面试官问我 #{} 和 ${} 的区别是什么?

引言&#xff1a;在使用 MyBatis 进行数据库操作时&#xff0c;#{} 和 ${} 的区别是面试中常见的问题&#xff0c;对理解如何在 MyBatis 中安全有效地处理 SQL 语句至关重要。正确使用这两种占位符不仅影响应用的安全性&#xff0c;还涉及到性能优化。 题目 被拷打已老实&…

2024-06-19,面试官问的问题

文章目录 1、采用minIO完成了图片存储&#xff0c;采用阿里云OSS服务器存储图片这两个功能面试官理解为重复&#xff0c;面试官又问minIO怎么同步到OSS&#xff1f;2、讲一下ThreadLocal&#xff1f;3、为什么用ThreadLocal存数据&#xff1f;4、redis有几种数据结构&#xff1…

零成本!无需服务器,搭建你的图床!

先给大家看看成品&#xff1a; 访问地址&#xff1a;http://cp64mba5g6h48vl4is50.app.memfiredb.cn/ 这是我花十分钟做出来的零成本&#xff0c;不需要服务器的图床&#xff0c;不需要登录&#xff0c;任何人都可以在上面上传图片和拿到图片链接去使用&#xff0c;当然这只…

【Java面试】二十一、JVM篇(中):垃圾回收相关

文章目录 1、类加载器1.1 什么是类加载器1.2 什么是双亲委派机制 2、类装载的执行过程&#xff08;类的生命周期&#xff09;3、对象什么时候可以被垃圾回收器处理4、JVM垃圾回收算法4.1 标记清除算法4.2 标记整理算法4.3 复制算法 5、分代收集算法5.1 MinorGC、Mixed GC、Full…

大数据的发展,带动电子商务产业链,促进了社会的进步【电商数据采集API接口推动电商项目的源动力】

最近几年计算机技术在诸多领域得到了有效的应用&#xff0c;同时在多方面深刻影响着我国经济水平的发展。除此之外&#xff0c;人民群众的日常生活水平也受大数据技术的影响。 在这其中电子商务领域也在大数据技术的支持下&#xff0c;得到了明显的进步。虽然电子商务领域的发…

网页钓鱼-克隆修改--劫持口令下载后门

免责声明:本文仅做技术交流与学习... 目录 1-右键另存为 2-goblin项目(不推荐) 修改goblin.yaml文件 运行exe ​编辑 3-Setoolkit (kali自带) 网页克隆---> 1-右键另存为 --不行就再定位元素进行修改. 2-goblin项目(不推荐) GitHub - xiecat/goblin: 一款适用于红蓝…

云原生安全联防联抗策略玩转微隔离

前言 随着信息技术的发展、互联网的快速普及&#xff0c;越来越多的信息被存储在云端&#xff0c;企业面临的安全问题也日益突出。在《网络安全法》、《数据安全法》等多部法律法规要求下&#xff0c;各行业用户纷纷设立安全部门。不管安全部门里是“一人当关”还是“三三两两…

PCB AVI品质报告采集工具

AVI设备,品质报告. 可以通过: 过滤文件名指定文件名 排除多余的日志;运行日志为增量日志,可采用增量模式;品质报告可设置采集后删除; 下载: Gitee下载 最新版本 优势: A. 开箱即用. 解压直接运行.不需额外安装. B. 批管理设备. 设备配置均在后台管理. C. 无人值守 客户端自…

lammps聚合物建模组合技巧

大家好,我是小马老师。 本文介绍聚合物结构的组合问题。 在lammps模拟中,聚合物模拟应该算是比较复杂的一种模拟,不仅建模复杂、势参数较多,而且在模拟过程中也会经常出现各种意想不到的错误。 本文主要解决聚合物建模过程中常遇到的一个问题:多成分的组合。 比如下面的结…