我希望能够在显示小部件后更改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中按下哪个键.这将是在用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) 我有一个旧应用程序,现在正在编译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) 是否可以将私有数据添加到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) 如何在启动时将 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)
我找不到一个选项:
如何在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 & gtk+2 和自定义文本输入创建应用程序,将字符绘制到 pango GtkDrawingArea,一切正常,直到用户告诉我他无法在我的应用程序中输入中文字符,他使用 fcitx 输入法.
目前我正在使用 simple key_press_event& key_release_eventGSignals 来实现字符输入,但我认为它不适用于输入法,我找到了一个GtkIMContext api 但不确定如何使用它。
所以,我的问题是,如何从 gtk+2 中的 fcitx/ibus 输入法接收字符?
我需要将Gtk2用于项目.我将使用python/ruby.问题是包装对我来说似乎有些神秘.我尝试使用VBox,以便在窗口中可以使用以下小部件(按以下顺序):
我已经设法"猜测"我的方式pack_start并获得我需要的布局,但我希望能够理解它.Ruby Gtk2上的文档看起来太不直观了(python也是如此,因为它是相同的,只是为python编写的),你能解开一些亮点吗?
此外,set_size_request添加组件时并不总是有效pack_start.这是为什么 ?
嗨,每一个我都有一个程序,我有包括
我用过命令
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编程
我需要在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)