当前位置: 首页 > news >正文

【C/Python】GtkApplicationWindow

一、C语言

GtkApplicationWindow 是 GTK 库中用于创建应用程序主窗口的一个控件。

首先,需要确保环境安装了GTK开发库。然后,以下是一个简单的使用 GtkApplicationWindow 创建一个 GTK 应用程序的示例:

#include <gtk/gtk.h>static void activate(GtkApplication *app, gpointer user_data) {// 创建一个 GtkApplicationWindow 实例GtkWidget *window;// 使用 gtk_application_new 创建一个新的 GtkApplicationWindow// 并关联到激活的应用程序对象window = gtk_application_window_new(app);// 设置窗口的标题gtk_window_set_title(GTK_WINDOW(window), "Example Application Window");// 设置窗口的默认大小gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);// 显示窗口gtk_widget_show_all(window);
}int main(int argc, char **argv) {GtkApplication *app;int status;// 创建新的 gtk 应用程序app = gtk_application_new("com.example.GtkApplication", G_APPLICATION_FLAGS_NONE);// 当激活信号发生时调用 activate 函数g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);// 运行应用程序,它将等待激活信号status = g_application_run(G_APPLICATION(app), argc, argv);// 清理并退出g_object_unref(app);return status;
}

在上面的代码中,首先包含GTK所需的头文件`<gtk/gtk.h>。接下来,定义一个 activate` 函数,当应用程序被激活时从 main 函数调用。

然后,在 main 函数中创建一个 GtkApplication 实例,设置其应用程序ID为 "com.example.GtkApplication" 并且没有指定特殊标志。通过连接 "activate" 信号到 activate 函数,一旦 GTK 主循环开始,并且应用程序被激活,它就会调用定义好的 activate 函数。

在 activate 函数中,创建了一个 GtkApplicationWindow。注意使用 gtk_application_window_new(app) 来创建窗口,并确保它与正确的`GtkApplication`实例关联。设置窗口的标题和默认大小,并调用`gtk_widget_show_all(window)`来显示窗口和它包含的所有窗口组件。

最后,通过 g_application_run 启动GTK的主事件循环,并在应用程序退出时清理资源。

请注意,这个例子假定正在构建一个使用 GTK+3 的 C 应用程序。如果使用的是 GTK+4,API 会有所变化。而且,构建系统需要配置得当以便找到 GTK 库及其头文件,通常使用 pkg-config 在编译命令中添加正确的标志。例如,如果使用的是 GCC,编译命令可以像这样:

gcc `pkg-config --cflags gtk+-3.0` -o example example.c `pkg-config --libs gtk+-3.0`

这会编译名为 example.c 的源文件,生成名为 example 的输出程序。使用 pkg-config 来取得 GTK 所需的编译和链接标志。

确保在编写代码时关注GTK的版本,因为API之间可能有一些差异。

57763b638ca348cc8780a2fc09ac2701.png

二、Python

要在Python中使用`GtkApplicationWindow`,可以使用PyGObject,它提供了GTK库的Python绑定。以下是使用`GtkApplicationWindow`的一个基本示例,使用的是GTK+3和Python 3:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtkclass MyWindow(Gtk.ApplicationWindow):# MyWindow类继承自Gtk.ApplicationWindow类def __init__(self, app):super().__init__(title="Example Application Window", application=app)self.set_default_size(200, 200)class MyApp(Gtk.Application):# MyApp类继承自Gtk.Application类def __init__(self):super().__init__()def do_activate(self):# 当应用程序被激活时调用win = MyWindow(self)win.show_all()def do_startup(self):# 启动应用程序时调用Gtk.Application.do_startup(self)app = MyApp()
exit_status = app.run(None)

在这个示例中,首先我们导入了必要的模块,并确保使用的是GTK+3的Python绑定。然后我们定义了一个窗口类`MyWindow`,它继承自`Gtk.ApplicationWindow`,以及一个应用程序类`MyApp`,继承自`Gtk.Application`。在`MyApp`类的`do_activate`方法中,创建了`MyWindow`的一个实例并显示该窗口。

最后创建`MyApp`的一个实例,并调用`run`方法运行应用程序。`run`方法会启动GTK的主事件循环。

在实际的应用程序中,可能还要处理信号和事件,添加按钮、文本框和其他界面元素,配置回调函数等等。这只是使用`GtkApplicationWindow`的最基本的例子。

要运行这段代码应该安装`PyGObject`,通常通过pip安装:

pip install PyGObject

如果正在使用的是GTK+4,则应该调用`gi.require_version('Gtk', '4.0')`,并且相应的API可能略有变化。 

 

 

 

 

 

 

 

 

http://www.lryc.cn/news/290832.html

相关文章:

  • SpringBoot自定义全局事务
  • 【FINEBI】finebi中常用图表类型及其适用场景
  • Kaggle竞赛系列_SpaceshipTitanic金牌方案分析_数据分析
  • Tortoise-tts Better speech synthesis through scaling——TTS论文阅读
  • 单元测试工具JEST入门——纯函数的测试
  • Elasticsearch Windows版安装配置
  • 安装 vant-ui 实现底部导航栏 Tabbar
  • GitHub国内打不开(解决办法有效)
  • Unity之第一人称角色控制
  • 23种设计模式-结构型模式
  • python -- 流程控制
  • Centos 7.9 在线安装 VirtualBox 7.0
  • mysql之基本查询
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之DataPanel组件
  • qt5-入门
  • 【重磅发布】已开放!模型师入驻、转格式再升级、3D展示框架全新玩法…
  • Qt 基础之QDataTime
  • 美国将限制中国,使用Azure、AWS等云,训练AI大模型
  • 智能指针|巨巨巨详细
  • 硬件知识(2) 手机的传感器-sensor
  • Kotlin快速入门系列9
  • nginx+nginx-rtmp-module+ffmpeg进行局域网推流rtmp\m3u8
  • PMP备考笔记:模拟考试知识点总结
  • docker程序镜像的安装
  • openssl3.2 - .pod文件的查看方法
  • 力扣238. 除自身以外数组的乘积(前后缀和)
  • Java玩转《啊哈算法》排序之快速排序
  • 静态代理IP该如何助力Facebook多账号注册运营?
  • npm 淘宝镜像正式到期
  • 【Spring Boot 3】【@Scheduled】多线程执行定时任务