标签: gtk2

更改GtkButton的标签

我希望能够在显示小部件后更改GtkButton的标签

char *ButtonStance == "Connect";
GtkWidget *EntryButton = gtk_button_new_with_label(ButtonStance);

gtk_box_pack_start(GTK_BOX(ButtonVbox), EntryButton, TRUE, TRUE, 0);

gtk_box_pack_start(GTK_BOX(TopVbox), ButtonVbox, TRUE, TRUE, 0);

gtk_widget_show_all(TopVbox);

ButtonStance == "Disconnect";

gtk_button_set_label(GTK_BUTTON(EntryButton), ButtonStance);

gtk_main();
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

c gtk gtk2

3
推荐指数
1
解决办法
4294
查看次数

检测C中按下了哪个键

我正试图找到一种方法来找出在C中按下哪个键.这将是在用GTK2编写的图形环境中,但我不认为答案就在那里.我想我可以使用Xlib做到这一点,但我还没有找到任何结论.

有没有人对如何做到这一点有任何建议?

我已设法使用以下代码捕获按键:

GtkWidget *window;
void gtk_widget_set_events(window,GDK_KEY_RELEASE_MASK);
g_signal_connect(window,"key_release_event",G_CALLBACK(hello),NULL);
Run Code Online (Sandbox Code Playgroud)

但是,我想确定按下了哪个键.从Aditya Kumar发布的链接中,我知道答案在于使用GdkEventKey,因为它是一个具有keyval字段的结构,但我似乎无法使语法正确.获得此号码的正确方法是什么?

这是我尝试过的一种方法:

static void hello( GtkWidget *widget,
               guint   data ){

g_print ("Hello World, %d was pressed\n",data);}
Run Code Online (Sandbox Code Playgroud)

当我捕获key_release_event时,我尝试通过执行此操作来提供"数据":

g_signal_connect(window,"key_release_event",G_CALLBACK(hello),GdkEventKey.keyval);
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个编译器错误,如下所示:

hello.c:85:5: error: expected ‘)’ before ‘.’ token 
hello.c:85:5: error: expected expression before ‘,’ token
Run Code Online (Sandbox Code Playgroud)

c gtk gtk2

3
推荐指数
1
解决办法
7335
查看次数

如何在Gtk 2窗口上创建cairo_t

我有一个旧应用程序,现在正在编译Gtk 2,但我需要介绍使用Cairo.我无法弄清楚如何从我的Widgets创建必要的cairo上下文(cairo_t).

这是我到目前为止要学习的代码,从Gtk 3教程修改(*ahem*cribbed).问题的关键是从窗口小部件创建一个cairo表面.就目前而言,该调用是一个草图,它不会编译,更不用说运行了.记住,我的目标是Gtk2,而不是3,至少在这一点上.

/* Snitched from http://zetcode.com/gfx/cairo/cairobackends/ on 13 Jan 2014 */
#include <cairo.h>
#include <cairo-xlib.h>
#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
  GtkWidget *window;
  GtkWidget *darea;
  cairo_surface_t *surface;
  cairo_t *cr;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

  darea = gtk_drawing_area_new();
  gtk_container_add(GTK_CONTAINER(window), darea);

  g_signal_connect(window,          "destroy", G_CALLBACK(gtk_main_quit), NULL);

  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_default_size(GTK_WINDOW(window), 400, 90);
  gtk_window_set_title(GTK_WINDOW(window), "GTK window");

  surface = cairo_xlib_surface_create(
      gtk_widget_get_display(window),   /* must be Display *, not struct GdkDisplay * */
      window,                           /* must be Drawable (no star) */
      gtk_widget_get_visual(window),    /* must …
Run Code Online (Sandbox Code Playgroud)

c gtk gtk2 cairo

3
推荐指数
1
解决办法
1915
查看次数

是否可以将私人数据添加到GtkWidget?

是否可以将私有数据添加到GtkWidget

背景:

我有很多GtkCheckBottons,所有这些小部件都连接到同一个回调.在回调中,我想处理小部件私有数据(或至少区分小部件).

例:

// checkbox signal callback
void on_checkbox_tcoggled(GtkWidget* widget, gpointer data) {
    MyClass* me = data;
    MyPrivateData* priv = widget->priv;  // ???

    MyClass_foo(me, priv);
}
Run Code Online (Sandbox Code Playgroud)

c gtk gtk2

3
推荐指数
1
解决办法
433
查看次数

如何在 Python GTK2 中将 GTK 条目设置为默认活动元素

如何在启动时将 GTK 条目设置为默认激活元素/小部件,以便我可以在不先单击条目小部件的情况下插入我的文本?

例如,当我启动这个脚本时,我想默认插入到 entry2 中:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import gtk

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
mainbox    = gtk.VBox()
window.add(mainbox)
mainbox.pack_start(gtk.Label("Label 1"))
entry1 = gtk.Entry()
mainbox.pack_start(entry1)
mainbox.pack_start(gtk.Label("Label 2"))
entry2 = gtk.Entry()
mainbox.pack_start(entry2)
window.show_all()
gtk.main()
Run Code Online (Sandbox Code Playgroud)

我找不到一个选项:

python gtk2

3
推荐指数
1
解决办法
1234
查看次数

如何获取gtk.ListStore的行数

如何在C中获取gtk.ListStore的项目数/行数/长度/计数

这是我的示例代码:

  store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);

  /* Append a row and fill in some data */
  gtk_list_store_append (store, &iter);
  gtk_list_store_set (store, &iter,
                      COL_NAME, "Heinz El-Mann",
                      COL_AGE, 51,
                      -1);

  /* .
     .
     .
  */
  /* get the length of gtk_list_store*/
Run Code Online (Sandbox Code Playgroud)

c gtk2

3
推荐指数
1
解决办法
1811
查看次数

如何从gtk+2中的输入法接收字符?

我正在使用 C & gtk+2 和自定义文本输入创建应用程序,将字符绘制到 pango GtkDrawingArea,一切正常,直到用户告诉我他无法在我的应用程序中输入中文字符,他使用 fcitx 输入法.

目前我正在使用 simple key_press_event& key_release_eventGSignals 来实现字符输入,但我认为它不适用于输入法,我找到了一个GtkIMContext api 但不确定如何使用它。

所以,我的问题是,如何从 gtk+2 中的 fcitx/ibus 输入法接收字符?

c linux gtk gtk2 fcitx

3
推荐指数
1
解决办法
804
查看次数

有人可以解释Gtk2包装吗?

我需要将Gtk2用于项目.我将使用python/ruby​​.问题是包装对我来说似乎有些神秘.我尝试使用VBox,以便在窗口中可以使用以下小部件(按以下顺序):

  • 菜单栏
  • 工具栏
  • 文本视图/编辑器控件

我已经设法"猜测"我的方式pack_start并获得我需要的布局,但我希望能够理解它.Ruby Gtk2上的文档看起来太不直观了(python也是如此,因为它是相同的,只是为python编写的),你能解开一些亮点吗?

此外,set_size_request添加组件时并不总是有效pack_start.这是为什么 ?

ruby python pygtk packing gtk2

2
推荐指数
1
解决办法
901
查看次数

找不到glib.h和gtk.h

嗨,每一个我都有一个程序,我有包括

  • GTK/gtk.h
  • glib.h

我用过命令

sudo apt-get install libgtk2.0-dev glib 
sudo apt-get install glade
Run Code Online (Sandbox Code Playgroud)

但仍然得到glib未找到ans gtk/gtk.h未找到的错误.我是第一次使用这个gtk.不知道它如何工作如何安装它请帮助我谢谢

我在做c编程

c linux gtk glib gtk2

2
推荐指数
1
解决办法
2万
查看次数

获取WebKit绑定以使用Perl和gkt2

我需要在perl + gtk2应用程序中使用WebKit.在CPAN上找到了一个包Gtk2 :: WebKit,但无法使其正常工作.

cpan> install Gtk2::WebKit
Run Code Online (Sandbox Code Playgroud)

给出以下输出:

Package webkit-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `webkit-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'webkit-1.0' found
at inc/Module/Install/PRIVATE/WebKit.pm line 24
*** can not find package webkit-1.0
*** check that it is properly installed and available in PKG_CONFIG_PATH
at inc/Module/Install/PRIVATE/WebKit.pm line 24
No 'Makefile' created'YAML' not installed, will not store persistent state
FLORA/Gtk2-WebKit-0.09.tar.gz
/usr/bin/perl Makefile.PL INSTALLDIRS=site -- NOT OK
Running make …
Run Code Online (Sandbox Code Playgroud)

perl webkit cpan gtk2

2
推荐指数
3
解决办法
3187
查看次数

标签 统计

gtk2 ×10

c ×7

gtk ×6

linux ×2

python ×2

cairo ×1

cpan ×1

fcitx ×1

glib ×1

packing ×1

perl ×1

pygtk ×1

ruby ×1

webkit ×1