我已经学习了一段时间的python并取得了一些成功.我甚至设法使用PyGtk + Glade创建了一个或两个(简单)程序.
问题是:我不确定使用GTK和python的最佳方法是使用Glade构建接口.
我想知道我们中更有经验的人(记住,我只是一个初学者)可以指出使用Glade的好处和注意事项,而不是在代码本身中创建所有内容(假设学习正确的gtk绑定不会完全是个问题).
试图在Codeblocks Win7上设置GTK + 3.0.找不到如何做到这一点有些麻烦.
GTK网站将您引导至msys2.似乎曾经在GTK网站上直接下载了一个不再存在的一体化Windows软件包.
按照说明,安装和更新msys2,我看到没有引用GTK +,在已安装的文件或GTK指示您的mysys网站上.
就不必要和愚蠢地做一些应该简单的事情而言,它看起来非常具有线索性.也许我错过了一些东西,但它不应该像下载压缩文件夹,提取和设置路径一样简单吗?
按照这个速度,id可以更快地学习C++并使用Qt.
问题出现在标题中,我很惊讶我不得不问这个问题,似乎谷歌应该已经完全覆盖,但我发现的一切都与GTK网站上不再提供的下载有关.我找不到有关msys2和GTK + 3.0的信息.
提前致谢.
我看过GTK + 3,我喜欢它.但遗憾的是,从源代码编译从未对我有用.Windows安装程序是否有适当的二进制文件甚至更好?
许多程序员以这种方式导入gtk和pygtk:
import gtk
import pygtk
Run Code Online (Sandbox Code Playgroud)
我只使用gtk创建了一个简单的程序,它可以工作:
import gtk
window = gtk.Window()
window.set_size_request(800, 700)
window.set_position(gtk.WIN_POS_CENTER)
window.connect("destroy", gtk.main_quit)
button = gtk.Button("Vai")
button.set_size_request(30, 35)
button.connect("clicked", naviga)
testo = gtk.Entry()
h = gtk.HBox()
h.pack_start(testo)
h.pack_start(button)
window.add(h)
window.show_all()
gtk.main()
Run Code Online (Sandbox Code Playgroud)
所以...问题是:GTK和PYGTK的区别是什么?
我相信这不是一个重复的问题,在发布此问题之前,我已经看到了所有问题/答案.我想我在这里有不同的情况.
我使用Ubuntu 12.04并下载了GTK 2和3.我从GNOME的网站上复制了一个简单的GTK源代码.但是当我在终端中使用此命令时:
gcc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
Run Code Online (Sandbox Code Playgroud)
我明白了:
hello.c:(.text+0x17): undefined reference to `gtk_init'
hello.c:(.text+0x23): undefined reference to `gtk_window_new'
hello.c:(.text+0x47): undefined reference to `gtk_main_quit'
hello.c:(.text+0x5b): undefined reference to `g_signal_connect_data'
hello.c:(.text+0x67): undefined reference to `gtk_widget_show'
hello.c:(.text+0x6c): undefined reference to `gtk_main'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#include <gtk/gtk.h>
int
main (int argc,
char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不确定是否出现错误,因为我有两个版本的GTK +或者是什么.我是Ubuntu/Linux应用程序开发的新手.
我目前的问题是libwebkitgtk-3.0-0,但我想这个问题很通用.
我的应用程序在webkit代码中崩溃了.我的假设是我们做了一些愚蠢的事情,想要找出什么.最简单的方法是设置断点或使用库的调试版本.
如何获得构建库的确切源代码?我在转储核心后得到堆栈跟踪,但行号gdb说与我在代码中看到的不匹配.换句话说,如果我安装libwebkitgtk-3.0-0,我想获得它的确切源代码.
我已经安装了webkit库的调试版本.这些调试版本是否具有与使用--enable-debug标志编译webkit相同的功能?webkit的调试版本基于WEBKIT_DEBUG环境变量启用日志记录,但即使使用库的调试版本,我也无法获得相同的日志记录.
如何使用我设法编译的调试版本?我设法在我的机器上编译webkit并尝试摆弄负载路径等.无论我做什么,我的应用程序都不会获取新的共享库 - 我可以根据用户代理签名来判断.有一次,我设法拿起了库,但是SSL停止了工作.GtkLauncher确实发生了同样的SSL问题.所以我在某个地方犯了错误.
谢谢你的指点.
在阻止实例的处理程序之后g_signal_handler_block,是否可以检查处理程序是否仍然被阻塞或者同时被g_signal_handler_unblock解除阻塞,除了将状态存储在布尔变量中之外?
我希望这样的事情是可能的
g_signal_handler_block (selection, handler_id_row_selected);
if (g_signal_handler_is_blocked (selection, handler_id_row_selected))
g_print ("is still blocked");
Run Code Online (Sandbox Code Playgroud)
但是一个"g_signal_handler_is_blocked"功能不存在.g_signal_handler_is_connected由于信号处理程序保持连接,因此函数返回TRUE,因此不是正确的函数.
我试过g_signal_handler_find (),因为有G_SIGNAL_MATCH_UNBLOCKED一种匹配类型,但它还没有工作.即使我已经重写了我的代码,我仍然想知道它是否可能,因为我相对经常使用阻塞/解除阻塞.
这是我第一次尝试制作一个线程软件.它将是基于Arch Linux的GTK2.
我按照这里的例子:
使用底部的SIGALRM示例.
编译时收到以下警告:
warning: 'g_thread_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:260) [-Wdeprecated-declarations]
if (!g_thread_supported ()){ g_thread_init(NULL); }
Run Code Online (Sandbox Code Playgroud)
我正试图找到关于我应该怎么做的信息.网上出现此警告的唯一事情是软件在编译时抛出相同错误的错误报告.很多报告看起来像他们说只是删除线.
我是否只删除该线并保持其余部分完好无损?或者有更好的方法来解决这个问题吗?
我正在使用触摸屏在Raspberry Pi Model B上运行信息娱乐系统,我想确保它像iPhone一样快感,因此我想在高优先级线程中运行图形和用户输入内容.
如果有人能指出我正确的方向这种类型的东西,将不胜感激.如有必要,任何在线文学作品都会有所帮助.
提前致谢.
我想在 GTK+3 中编译代码。不使用 MSYS2 或 Visual Studio。我收到“未定义的引用”
首先,尝试使用官方页面上的本教程:https://www.gtk.org/download/windows.php,但使用 MSYS2 时一团糟;另外,我不想要类似linux的环境,也不想要类似unix的环境(更不用说Visual Studio)。
我下载了版本 2 的“多合一包”,设置了环境变量等所有内容。一切正常,代码已编译!(版本 2 中的代码)。然后我尝试更改为版本 3,从以下位置下载了所有合一包(64 位): http: //www.tarnyko.net/dl/gtk.htm
当然,环境变量被更新了,编译行中的库的版本也被更新了。该程序适用于版本 3,特别是官方网站中的第一个: https: //developer.gnome.org/gtk3/stable/gtk-getting-started.html。没有起作用。
然后,按照本教程进行操作:http://www.tarnyko.net/repo/gtk3_build_system/tutorial/gtk3_tutorial.htm
我用命令的结果重写了编译行:(pkg-config --cflags --libs gtk+-3.0如上面的教程所述)
版本 2(正确)的编译行是:
gcc -Wall -g test.c -o test -mms-bitfields -Ic:/gtk/include/gtk-2.0 -Ic:/gtk/lib/gtk-2.0/include -Ic:/gtk/include/atk-1.0 -Ic:/gtk/include/cairo -Ic:/gtk/include/gdk-pixbuf-2.0 -Ic:/gtk/include/pango-1.0 -Ic:/gtk/include/glib-2.0 -Ic:/gtk/lib/glib-2.0/include -Ic:/gtk/include -Ic:/gtk/include/freetype2 -Ic:/gtk/include/libpng14 -Lc:/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
Run Code Online (Sandbox Code Playgroud)
版本 3(我要问的那个)的编译行是:
gcc -Wall -g iniciando.c -o iniciando -mms-bitfields …Run Code Online (Sandbox Code Playgroud)