chatgpt: linux 下用纯c 编写一按钮,当按钮按下在一新窗口显示本机主目录下图片子目录中的1.jpg图片
tmd,这chatgpt太强大了。
从下面的c程序与python程序对比,纯c的ui编程也不是太复杂。
再说一次,要想学好编程必须要用上这个chatgpt工具。
在 Linux 环境下使用纯 C 语言编写一个按钮,当按钮按下时,在一个新窗口中显示本机主目录下图片子目录中的 1.jpg 图片。我们可以使用 GTK 库来实现这个功能。GTK 是一个用于创建图形用户界面的跨平台工具包。我们还需要使用 GdkPixbuf 库来处理图像。
以下是一个示例程序,它创建一个窗口,包含一个按钮。当按钮被按下时,会弹出一个新窗口并显示 1.jpg 图片。
首先,确保你的系统已经安装了 GTK 库和 GdkPixbuf 库。如果没有,可以使用以下命令安装:
sudo apt-get install libgtk-3-dev
sudo apt-get install libgdk-pixbuf2.0-dev
#include <gtk/gtk.h>// 回调函数,当按钮被按下时调用
static void on_button_clicked(GtkWidget *widget, gpointer data) {GtkWidget *image_window;GtkWidget *image;GdkPixbuf *pixbuf;gchar *filename = g_strdup_printf("%s/Pictures/1.jpg", g_get_home_dir());// 创建一个新窗口image_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(image_window), "Image Display");gtk_container_set_border_width(GTK_CONTAINER(image_window), 10);gtk_window_set_default_size(GTK_WINDOW(image_window), 800, 600);// 加载图像pixbuf = gdk_pixbuf_new_from_file(filename, NULL);if (!pixbuf) {g_print("Error loading file: %s\n", filename);return;}// 创建图像控件image = gtk_image_new_from_pixbuf(pixbuf);// 将图像控件添加到窗口中gtk_container_add(GTK_CONTAINER(image_window), image);// 显示所有窗口内的控件gtk_widget_show_all(image_window);// 释放资源g_object_unref(pixbuf);g_free(filename);
}int main(int argc, char *argv[]) {GtkWidget *window;GtkWidget *button;// 初始化 GTKgtk_init(&argc, &argv);// 创建一个新窗口window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window), "Show Image Button");gtk_container_set_border_width(GTK_CONTAINER(window), 10);gtk_window_set_default_size(GTK_WINDOW(window), 200, 100);// 当窗口关闭时,退出 GTK 主循环g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);// 创建一个按钮,并设置按钮标签button = gtk_button_new_with_label("Show Image");// 当按钮被按下时,调用回调函数 on_button_clickedg_signal_connect(button, "clicked", G_CALLBACK(on_button_clicked), NULL);// 将按钮添加到窗口中gtk_container_add(GTK_CONTAINER(window), button);// 显示所有窗口内的控件gtk_widget_show_all(window);// 进入 GTK 主循环gtk_main();return 0;
}
保存上述代码到一个名为 show_image_button.c 的文件中,然后使用以下命令编译并运行该程序:
gcc show_image_button.c -o show_image_button `pkg-config --cflags --libs gtk+-3.0 gdk-pixbuf-2.0`
./show_image_button
当你运行该程序时,会出现一个窗口,包含一个标签为 "Show Image" 的按钮。点击按钮后,会弹出一个新窗口,并显示本机主目录下图片子目录中的 1.jpg 图片。如果图片文件不存在或路径不正确,请确保文件路径正确,并且图片文件位于指定位置。
相关文章:
chatgpt: linux 下用纯c 编写一按钮,当按钮按下在一新窗口显示本机主目录下图片子目录中的1.jpg图片
tmd,这chatgpt太强大了。 从下面的c程序与python程序对比,纯c的ui编程也不是太复杂。 再说一次,要想学好编程必须要用上这个chatgpt工具。 在 Linux 环境下使用纯 C 语言编写一个按钮,当按钮按下时,在一个新窗口中显示本机主目…...
SherlockChain:基于高级AI实现的智能合约安全分析框架
关于SherlockChain SherlockChain是一款功能强大的智能合约安全分析框架,该工具整合了Slither工具(一款针对智能合约的安全工具)的功能,并引入了高级人工智能模型,旨在辅助广大研究人员针对Solidity、Vyper和Plutus智…...
MySQL中Explain执行计划各参数的含义
EXPLAIN 语句输出的各个列的作用先大致罗列一下: 列名 描述 id 在一个大的查询语句中每个SELECT关键字都对应一个唯一的id select_type SELECT关键字对应的那个查询的类型 table 表名 partitions 匹配的分区信息 type 针对单表的访问方法 possible_keys…...
Redis队列自研组件
背景 年初的时候设计实践过一个课题:SpringBootRedis实现不重复消费的队列,并用它开发了一个年夜饭下单和制作的服务。不知道大家还有没有印象。完成这个课题后,我兴致勃勃的把它运用到了项目里面,可谁曾想,运行不久后…...
ArchLinux挑战安装(ZFS、Wayland、KDE、xero)
目录 0. 前言: 1. 先期准备 1.1 引导ArchLinx光盘。 1.2 禁用 reflector 服务 1.3 防止网卡禁用 1.4 wifi设置 1.5 测试网络是否连接 1.6 更新系统时间 1.7 更换源 1.8 下载ZFS模块 1.9 加载ZFS模块 2. 磁盘处理 2.1 查看磁盘分区 2.2 清除与整个磁盘…...
纯css写一个动态圣诞老人
效果预览 在这篇文章中,我们将学习如何使用CSS来创建一个生动的圣诞老人动画。通过CSS的魔力,我们可以让圣诞老人在网页上摇摆,仿佛在向我们招手庆祝圣诞节和新年。 实现思路 实现这个效果的关键在于CSS的keyframes动画规则以及各种CSS属性…...
百度Apollo的PublicRoadPlanner一些移植Ros2-foxy的思路(持续更新)
如今的PublicRoadPlanner就是之前耳熟能详的EM planner 计划 —— ROS2与CARLA联合仿真 结构化场景: 规划算法:EM-planner 控制算法:MPC和PID 非结构化场景: 规划算法采用Hybrid A* (1)小车模型搭建(计划参考Github上Hybrid上的黑车,比较炫酷) (2)车辆里程计: 位…...
Linux内存管理(七十三):cgroup v2 简介
版本基于: Linux-6.6 约定: 芯片架构:ARM64内存架构:UMACONFIG_ARM64_VA_BITS:39CONFIG_ARM64_PAGE_SHIFT:12CONFIG_PGTABLE_LEVELS :31. cgroup 简介 术语: cgroup:control group 的缩写,永不大写(never capitalized); 单数形式的 cgroup 用于指定整个特性,也用…...
c++习题01-ljc的暑期兼职
目录 一,题目描述 二,思路 三,伪代码 四,流程图 五,代码 一,题目描述 二,思路 1,根据题目要求需要声明4个变量:a,b,c,d ;牛奶价格a,活动要求b&…...
有哪些方法可以恢复ios15不小心删除的照片?
ios15怎么恢复删除的照片?在手机相册里意外删除了重要的照片?别担心!本文将为你介绍如何在iOS 15系统中恢复已删除的照片。无需专业知识,只需要按照以下步骤操作,你就能轻松找回宝贵的回忆。 一、从iCloud云端恢复删除…...
nacos漏洞汇总
1 nacos介绍 1.1 nacos是啥 Alibaba Nacos是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,可以快速实现动态服务发现、服…...
React Antd ProTable 如何设置类似于Excel的筛选框
React Antd ProTable 如何设置类似于Excel的筛选框 目标:在web页面的table表格中完成类似于EXCEL的Filter筛选功能。 示例图:点击标题列上方的漏斗状图标,即可对数据进行筛选。 ProTable 前景提要 ProTable API中有说明,是有…...
句法分析概述
第1关:句法分析概述 任务描述 本关任务:通过对句法分析基本概念的学习,完成相应的选择题。 相关知识 为了完成本关任务,你需要掌握: 句法分析的基础概念; 句法分析的数据集和评测方法。 句法分析简介…...
简单了解css的基本使用
CSS 一、基础认知 1、CSS引入方式 1.1、内嵌式(CSS写在style标签中) style标签虽然可以写在页面的任意位置,但是通常约定写在head标签中 2.2、外联式(CSS写在一个单独的.css文件中) 需要通过link标签在网页中引入…...
构建网络图 (JavaScript)
前序:在工作中难免有一些千奇百怪的需求,如果你遇到构建网络图,或者学习应对未来,请看这边文章,本文以代码为主。 网络图是数据可视化中实用而有效的工具,特别适用于说明复杂系统内的关系和连接。这些图表…...
洛谷U389682 最大公约数合并
这道题最后有一个性质没有想出来,感觉还是有一点遗憾。 性质一、贪心是不对的 8 11 11 16虽然第一次选择8和16合并是最优的,但是如果合并两次的话8 11 11是最优的。 性质二 、有1的情况就是前k1个,也就是说,很多情况下取前k1都…...
video_多个m3u文件合并成一个m3u文件
主要是用#EXT-X-DISCONTINUITY进行拼接,用简单的例子说明: 第一个文件: #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:69 #EXT-X-MEDIA-SEQUENCE:1001 #EXTINF:60.000000, xmt202406_11001.ts #EXTINF:60.000000, xmt202406_11002.ts #EXTINF:60.000000, xmt202406_11…...
x264 码率控制 MBtree 原理:i_propagate_cost计算过程
x264 码率控制 MBtree 原理 关于x264 码率控制中 MBtree 算法的原理具体可以参考:x264 码率控制MBtree原理。 i_propagate_cost介绍 该值在 frame.h 中 x264_frame_t结构体中声明。该值是一个 uint16_t型指针变量,在 MBtree 算法中用来存储每个宏块的传播代价。在*frame_ne…...
C语言基础笔记(全)
一、数据类型 数据的输入输出 1.数据类型 常量变量 1.1 数据类型 1.2 常量 程序运行中值不发生变化的量,常量又可分为整型、实型(也称浮点型)、字符型和字符串型 1.3 变量 变量代表内存中具有特定属性的存储单元,用来存放数据,即变量的值&a…...
通过注释语句,简化实体类的定义(省略get/set/toString的方法)
引用Java的lombok库,减少模板代码,如getters、setters、构造函数、toString、equals和hashCode方法等 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructorData…...
春联生成模型安装包制作:一键部署exe工具开发
春联生成模型安装包制作:一键部署exe工具开发 1. 引言 每年春节前,很多朋友都想自己动手写春联,但要么字写得不够好看,要么想不出有新意的词句。现在有了AI春联生成模型,这个问题就简单多了。不过,对于不…...
OpenClaw定时任务管理:千问3.5-35B-A3B-FP8实现早间资讯自动推送
OpenClaw定时任务管理:千问3.5-35B-A3B-FP8实现早间资讯自动推送 1. 为什么需要自动化资讯推送 每天早上打开电脑第一件事,就是查看行业动态和技术新闻。但手动检索各大平台、整理关键信息要耗费20多分钟,经常打乱晨间工作节奏。直到发现Op…...
Nooploop TOFSense-M 点阵激光测距模块:从开箱到ROS集成的全栈开发指南
1. 开箱与硬件初体验 刚拿到Nooploop TOFSense-M时,这个火柴盒大小的模块确实让我有些意外——毕竟能实现0.1-12米测距能力的设备,想象中应该更笨重些。包装盒里除了主体模块,还贴心地配备了杜邦线和转接板,这对嵌入式开发者来说就…...
蓝桥杯二分算法通关指南:模板+真题+避坑,O(logn)秒杀大数据题
蓝桥杯二分算法通关指南:模板真题避坑,O(logn)秒杀大数据题 文章目录蓝桥杯二分算法通关指南:模板真题避坑,O(logn)秒杀大数据题一、蓝桥杯二分核心题型(精简必背)1. 二分查找(基础必考…...
AI绘画联动:OpenClaw调用Qwen3-32B生成Stable Diffusion提示词
AI绘画联动:OpenClaw调用Qwen3-32B生成Stable Diffusion提示词 1. 当AI助手遇上AI绘画:我的自动化创作实验 去年第一次接触Stable Diffusion时,我就被它的创作潜力震撼了。但很快发现一个问题:要得到理想的画面,往往…...
在FreeRTOS上为Zynq CAN驱动添加任务间通信:一个实用的数据收发框架搭建
在FreeRTOS上为Zynq CAN驱动构建高效任务间通信框架 当我们在Zynq平台上开发基于FreeRTOS的CAN总线应用时,如何安全高效地在中断服务程序(ISR)与任务之间传递数据,是构建稳定系统的关键挑战。本文将深入探讨一个经过实战检验的解决方案——通过消息队列和…...
形式验证实战:5个降低状态空间复杂度的黑科技(附内存控制器案例)
形式验证实战:5个降低状态空间复杂度的黑科技(附内存控制器案例) 在芯片设计领域,形式验证(Formal Verification, FV)正逐渐成为确保设计正确性的重要手段。然而,随着设计复杂度的提升ÿ…...
【逆向实战】Unity3D+il2cpp手游反编译与逻辑修改全流程解析【IDA Pro+il2CppDumper】
1. 从零开始理解Unity3Dil2cpp逆向 第一次接触手游逆向的朋友可能会被"il2cpp"这个术语吓到。其实简单来说,il2cpp就是Unity3D用来提升游戏性能的编译方案——它把C#代码先转成C,再编译成原生机器码。这种架构虽然让游戏跑得更快,但…...
告别Keil C51安装烦恼:STC8单片机开发环境保姆级配置指南(含芯片包添加)
从零搭建STC8开发环境:Keil C51避坑指南与实战技巧 第一次接触STC8单片机时,最让人头疼的莫过于开发环境的搭建。网上教程要么过于简略,要么步骤不全,总会在某个环节卡住——可能是Keil安装报错,可能是芯片包添加失败&…...
OpenClaw任务编排:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF处理依赖型工作流
OpenClaw任务编排:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF处理依赖型工作流 1. 为什么需要任务编排 去年夏天,我接手了一个数据分析项目,需要定期从十几个网站抓取数据,清洗后生成分析报告,再邮件发送给团…...
