我对GTK术语感到困惑.根据维基百科,似乎有GTK +的绑定称为GTK(GtkAda)和GTK2(gtk2hs,Gtk2-Perl).
有人可以为我清除这个吗?
我正在寻找gi.repository模块文档,我在互联网上找不到任何东西.我发现的只是C的新Gtk3库的文档,或旧的PyGtk 2.0参考手册
我正在寻找像PyGtk 2.0参考手册,但对于Gtk3.
Python有类似的东西吗?(我不是在寻找dir(Gtk)或help(Gtk)在Python控制台中.)
我从代码GTK教程在base.c.
我正在使用Ubuntu,当我编译使用时
$ gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc' to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
base.c:1:20: fatal error: gtk/gtk.h: No such file or directory compilation terminated.
Run Code Online (Sandbox Code Playgroud)
作为Linux的新手,有人可以帮助我设置环境,以便我可以成功编译/运行程序吗?
我以树店为模型进行了树视图.窗口按预期显示,但当我单击"+"展开项目时,我收到以下消息:
GLib-CRITICAL **: Source ID 221 was not found when attempting to remove it
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#include <gtk/gtk.h>
/* compile with: */
/* gcc main.c -o boxy `pkg-config --cflags --libs gtk+-2.0` */
typedef struct {
GtkWidget *toplevel;
GtkWidget *treeview;
} Widgets;
enum { ITEM_PARENT, ITEM_CHILD };
typedef struct {
gint tipo;
gint id;
gchar *nombre;
gint cantidad;
} Lista;
void addColumn (GtkTreeView *tv, const gchar* title, gint pos) {
GtkCellRenderer *tmp;
tmp = gtk_cell_renderer_text_new ();
g_object_set (tmp, "editable", TRUE, "editable-set", TRUE, …Run Code Online (Sandbox Code Playgroud) 我一直在尝试MessageBox使用GTK 实现Win32 .该应用程序使用SDL/OpenGL,因此这不是一个GTK应用程序.
我gtk_init在MessageBox函数内处理initialisation()类的东西,如下所示:
int MessageBox(HWND hwnd, const char* text, const char* caption, UINT type)
{
GtkWidget *window = NULL;
GtkWidget *dialog = NULL;
gtk_init(>kArgc, >kArgv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), NULL);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL);
// gcallback calls gtk_main_quit()
gtk_init_add((GtkFunction)gcallback, NULL);
if (type & MB_YESNO) {
dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, text);
} else {
dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, text);
}
gtk_window_set_title(GTK_WINDOW(dialog), caption);
gint result = gtk_dialog_run(GTK_DIALOG(dialog));
gtk_main();
gtk_widget_destroy(dialog); …Run Code Online (Sandbox Code Playgroud) 上下文:编写一个应该是跨平台的绘图程序.所以我有多个前端负责提供对Cairo上下文的后端类访问,基本事件处理和窗口小部件大小信息.我最近决定将当前的UI比例(用于高DPI显示)添加到最后一位,主要是因为我想将图形切换为渲染到图块缓存,所以我需要知道显示器可以支持的最高级别的细节.
在我的小跨平台世界中,我希望后端类的前端适配器我正在谈论正确配置Cairo上下文以便在将其交给我之前在虚拟化像素中工作.我只需要比例来限制我在瓷砖上使用的缩放比例.
在AppKit上,这很容易:要求NSView将1个虚拟像素的NSSize缩放为"后备存储坐标",并将其交给后端类.Apple也非常聪明,可以提供预先扩展的CoreGraphics上下文,因此我所要做的就是请求翻转坐标并将CGContext推送到Cairo.
在GTK上我有点困惑.似乎有太多方法可以做到这一点.GtkWidget有一个" get scale factor "调用,gint gtk_widget_get_scale_factor (GtkWidget *widget)它返回一个整数值.这似乎有点过于严格,因为你无法处理这种情况之间的屏幕.即我所关注的28"3840x2160显示器应该是1.5倍显示器,但在GTK下,一切都会太小或太大.
Ubuntu也投入了自己的扳手,因为它有自己的DPI比例因子,似乎与其他一切不同.只有少数应用程序似乎真正支持它.我把它调到了1.5; Firefox和Brackets没有扩展,Nautilus和终端确实扩展,Empathy做了这个奇怪的事情,除了会话文本之外的所有内容.所以它显然不是全系统的,甚至不是内置于GTK ...... blarrgh.
另外,X11有自己获取DPI信息的方式,我听说这是非常不准确的,无论如何都不值得考虑,因为Mir和Wayland无论如何都要替换它.
但是,我无法找到有关这个超级特殊的Unity API的任何信息,以获取用户指定的UI比例.所以我现在要抓住GTK自己的整数刻度,我认为这不足以满足要求.我真的很想知道如何获取Unity scale参数,或任何其他桌面环境自己的专有UI比例参数,但我有一种感觉,我可能还需要发送自定义首选项来为此特定前端手动配置UI缩放.
(对于那些好奇的人:我的代码在这里可用- 我正在讨论的后端类是在src/canvasview.cpp中,前端"视图适配器"的例子在frontends/gtk/src/CanvasWidget.cpp和frontends /中分别是appkit/src/ICAKCanvasView.m.请记住,当我忙于调试基于tile的渲染时,代码当前处于损坏状态.)
我已经学习了一段时间的python并取得了一些成功.我甚至设法使用PyGtk + Glade创建了一个或两个(简单)程序.
问题是:我不确定使用GTK和python的最佳方法是使用Glade构建接口.
我想知道我们中更有经验的人(记住,我只是一个初学者)可以指出使用Glade的好处和注意事项,而不是在代码本身中创建所有内容(假设学习正确的gtk绑定不会完全是个问题).
我需要编写一个应用程序,它与Windows XP/Vista/7本机编写的内容在视觉上无法区分,使用最现代的Visual Studio默认设置.但我正在开发使用MinGW和Vim(用C++编写).
特别是,我希望以下控件在以上三个版本的Windows上是原生的:表单铬,按钮,复选框,菜单,组合框,进度条,滚动条,富文本框.这对我来说已经足够了.
我知道如果您加载GdiPlus和其他类似的东西riched32.dll,并使用Windows API来实例化控件,那么操作系统将替换其版本的GdiPlus或其他库,因此它看起来像XP上的XP风格控件,Vista上的Vista,等等
但我不想使用普通的Windows API,因为即使检索默认字体也需要半页代码,而且类似的故事无论我想做什么.所以我想使用工具包.
wxWidgets,Qt,GTK +,FLTK似乎是使用最广泛的.但它们都是跨平台的.我使用过跨平台应用程序,其中许多都有外部GUI控件(我称之为小部件).所以我的问题是:这些工具包中的哪一个可以生成上面列出的真正的原生外观UI控件,正确显示在上面列出的三个版本的MSWin上?
我在谷歌图片中输入了每个+"窗口",但很难说,除了FLTK可能无法做到.你们中的许多人必须从头脑中知道答案......
试图在Codeblocks Win7上设置GTK + 3.0.找不到如何做到这一点有些麻烦.
GTK网站将您引导至msys2.似乎曾经在GTK网站上直接下载了一个不再存在的一体化Windows软件包.
按照说明,安装和更新msys2,我看到没有引用GTK +,在已安装的文件或GTK指示您的mysys网站上.
就不必要和愚蠢地做一些应该简单的事情而言,它看起来非常具有线索性.也许我错过了一些东西,但它不应该像下载压缩文件夹,提取和设置路径一样简单吗?
按照这个速度,id可以更快地学习C++并使用Qt.
问题出现在标题中,我很惊讶我不得不问这个问题,似乎谷歌应该已经完全覆盖,但我发现的一切都与GTK网站上不再提供的下载有关.我找不到有关msys2和GTK + 3.0的信息.
提前致谢.
虽然编程C和GTK +,为什么会"更好"来使用g_strdup_printf,g_free,g_strcmp0等...和同事glib函数?