我正在写一个GTK +应用程序.在程序运行结束时,它会打开用户选择的目录.目前,打开鹦鹉螺很难编码:
g_spawn_sync(
0,
stringArray(
"/usr/bin/nautilus",
gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(directoryChooser)),
NULL
), 0, 0, 0, 0, 0, 0, 0, 0);
gtk_main_quit();
Run Code Online (Sandbox Code Playgroud)
我希望这可以在其他不一定安装或首选的nautilus的桌面环境中工作.有链接到其他程序中/etc/alternatives,并如链接x-terminal-emulator和x-www-browser被标准化.
是否有类似的方法来获得首选的图形文件管理器?
我已经调用了一个对象的const成员函数.
我在MainWindow上创建了一个对象,在之前设置大小后称为get_size().
调用基类Gtk :: Window的get_size()方法.
它给出了错误:'Gtk :: Window'不是'MainWindow'的可访问基础.
MainWindow继承自Gtk :: Window类
class MainWindow: Gtk::Window
{
};
Run Code Online (Sandbox Code Playgroud)
这可能是什么原因.
Murrine引擎硬编码了我需要在我自己的代码中复制的一些行为,因此我需要找出是否正在使用Murrine引擎或其他一些.我怎样才能做到这一点?哪些配置文件存储此信息,是否有我可以调用的API?
我想在gtk3中用cairo绘制一个散点图.首先,我在这里使用示例:http://zetcode.com/tutorials/cairographicstutorial/
他们成功编译gtk2但没有显示图像.它们不使用gtk3编译,但会出现以下错误:
example.c: In function ‘on_expose_event’:
example.c:17:31: error: ‘GtkWidget’ has no member named ‘window’
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将不胜感激.
顺便说一句,如果有帮助,我正在使用ArchLinux进行写作.
我正在尝试用C++编写一些多线程代码,但我似乎无处可去.我做了一些研究,但我很难找到一些基本的例子来告诉我如何实现我的需要.我正在使用Linux中的Gtk应用程序,每次都有耗时的操作,比如加载文件,GUI锁定(如果我尝试移动它,所有控件等都会消失,只留下空白窗口).这显然可以通过线程解决,但我不知道从哪里开始寻找.我应该使用pthreads,C++ Thread,boost :: Thread,Glib :: Thread吗?使用上述任何一项的区别和原因是什么?
我的目标是建立一个消息对话框,甚至是一个进度条对话框,可以显示何时在后台运行操作.基本上任何会在完成工作时让GUI响应的东西.我真的很感谢一些示例或链接到一些要学习的源代码.
最近我开始了一个C++项目,以便熟悉GTK功能.我使用C++方法'因为我总是用java编程,所以在我看来很熟悉.
现在,GTK库是用C代码编写的,所以我在类和C代码之间实现了一些混合.我的一个问题是GTK事件与回调函数一起使用.为了将这些事件封装在类中,我使用了静态方法.
最重要的是静态方法和静态变量在类中是不可见的,而且我已经编写了一些其他静态函数,仅在类的.cpp文件中声明,从回调内部调用但与类完全分离.
在我看来这种方法有点笨拙,所以我想知道有没有最好的方法来处理类中的回调并允许它们以优雅的方式与类方法和结构进行交互?
谢谢!
我用GTK + -2.0开发了一个简单的应用程序.我的问题是如何在不冻结程序的情况下运行bash脚本(例如使用system(3))?我试图实现一个线程系统,但它没有奏效.
这是我的代码片段,我尽力简化.问候
int main(int argc,
char * argv[])
{
GtkWidget *button;
/* init threads */
g_thread_init(NULL);
gdk_threads_init();
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
...
button = gtk_button_new_with_label("Format");
g_signal_connect(button,"clicked",G_CALLBACK(callback),(gpointer)"button 1");
gtk_table_attach_defaults (GTK_TABLE (table), button, 0, 1, 0, 1);
gtk_widget_show(button);
gdk_threads_enter();
gtk_main();
gdk_threads_leave();
return 0;
}
/* Our callback.
* The data passed to this function is printed to stdout */
static void callback( GtkWidget *widget,
gpointer data )
{
int sTemp=0;
GThread *thread;
GError *error = NULL;
g_print ("Hello again - …Run Code Online (Sandbox Code Playgroud) 我正在努力将二进制数据变成一个gtk.gdk.pixbuf.
这应该说明我的问题:
file = open("image.jpg", "rb")
//Ultimately this is going to come from a BLOB
binary = f.read()
//I created a pixbuf directly from the jpg
//and took the rowstride values &c. from that
pixbuf = gtk.gdk.pixbuf_new_from_data(
binary, gtk.gdk.COLORSPACE_RGB, False, 8 , 450, 640, 1352)
Run Code Online (Sandbox Code Playgroud)
这失败了:
ValueError: data length (90825) is less then required by the other parameters (865280)
我目前的解决方法是将二进制数据写入文件,然后Pixbuf从该文件创建.这只是感觉很hacky.我正在从数据库中读取二进制数据,所以我真的需要一个可以直接从缓冲区创建pixbuf的解决方案.
我不明白为什么如果我只是BLOB从数据库中读取并将其写入文件 - 然后将文件作为pixbuf加载,这很容易,但更难直接从缓冲区!
我究竟做错了什么?
从我的代码访问GtkApplicationWindow对象对我很有用,但我想使用Glade来初始化它的属性.
如何在Glade中创建GtkApplicationWindow小部件?
在您看来,使用python在Windows中创建gui的最佳方法是什么?
你推荐PyQt for windows吗?