- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试开发一个基于 C 的应用程序,它嵌入了一个或多个 Python 解释器。我在 C 部分中使用 gtk-things,并在其中合理地调用 gtk_main()。
Python 解释器是使用 Py_NewInterpreter() 在单独的 pthread 中创建的,并且基本上永远运行(在脚本终止的情况下,将“while True”循环添加到末尾)。
现在我想在这些脚本中使用 pyGTK,在出现回调(发出信号)之前它似乎一直有效。您可以注册信号处理程序以指向 Python 脚本中的部分,但似乎 gtk 主循环在它们发生时无法正确引导它们,导致如下日志所示的段错误。
我猜这可能与未正确初始化的 python 线程状态有关,但不确定。任何人都知道我做错了什么或要检查什么吗?
#0 0xb7ecfc9a in PyFrame_New () from /usr/lib/libpython2.5.so.1.0#1 0xb7f376ed in PyEval_EvalCodeEx () from /usr/lib/libpython2.5.so.1.0#2 0xb7ed09b6 in ?? () from /usr/lib/libpython2.5.so.1.0#3 0xb7eae327 in PyObject_Call () from /usr/lib/libpython2.5.so.1.0#4 0xb7f30f7c in PyEval_CallObjectWithKeywords () from /usr/lib/libpython2.5.so.1.0#5 0xb7eaeb5c in PyObject_CallObject () from /usr/lib/libpython2.5.so.1.0#6 0xb424face in ?? () from /usr/lib/pymodules/python2.5/gtk-2.0/gobject/_gobject.so#7 0xb76e113a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0#8 0xb76f761d in ?? () from /usr/lib/libgobject-2.0.so.0#9 0xb76f8bfc in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0#10 0xb76f9076 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0#11 0xb7ab3a8a in gtk_button_clicked () from /usr/lib/libgtk-x11-2.0.so.0#12 0xb7ab5048 in ?? () from /usr/lib/libgtk-x11-2.0.so.0#13 0xb76eecac in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0#14 0xb76df7a9 in ?? () from /usr/lib/libgobject-2.0.so.0#15 0xb76e113a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0#16 0xb76f6eba in ?? () from /usr/lib/libgobject-2.0.so.0#17 0xb76f8bfc in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0#18 0xb76f9076 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0#19 0xb7ab3b2a in gtk_button_released () from /usr/lib/libgtk-x11-2.0.so.0#20 0xb7ab3b73 in ?? () from /usr/lib/libgtk-x11-2.0.so.0#21 0xb7b70e74 in ?? () from /usr/lib/libgtk-x11-2.0.so.0#22 0xb76df7a9 in ?? () from /usr/lib/libgobject-2.0.so.0#23 0xb76e113a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0#24 0xb76f7266 in ?? () from /usr/lib/libgobject-2.0.so.0#25 0xb76f8a7b in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0#26 0xb76f9076 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0#27 0xb7c9d156 in ?? () from /usr/lib/libgtk-x11-2.0.so.0#28 0xb7b694cd in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0#29 0xb7b6a857 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0#30 0xb79f3dda in ?? () from /usr/lib/libgdk-x11-2.0.so.0#31 0xb7636305 in g_main_context_dispatch () from /lib/libglib-2.0.so.0#32 0xb7639fe8 in ?? () from /lib/libglib-2.0.so.0#33 0xb763a527 in g_main_loop_run () from /lib/libglib-2.0.so.0#34 0xb7b6ae19 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
最佳答案
在这种情况下,您最好再制作一个 Python 解释器,并通过将 Python 片段发送到那个特殊的 GTK 帮助解释器来完成所有 GTK 工作。这样你的 C 代码就不会直接使用 GTK,你只需要担心 Python 线程之间的协调。
关于python - pygtk 和 native gtk_main();混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4896434/
我正在将使用 GTK 库的 GUI 应用到我的程序中。简而言之,每次有输入时我都会计算一个变量,然后使用 gtk_text_buffer 将输入显示在文本中。问题是,每当我收到输入时(一切都在 whi
我正在开发一个使用 C 和 unix 低级套接字的聊天应用程序。我已经成功制作了控制台版本,但我想为应用程序制作一个 GUI。我想将 GTK 用于 GUI。我的问题是如何“同步”套接字和 GUI。因为
这两个函数都是无限循环, 一旦在同一线程中调用,程序就会挂起。 gtk_main(); ... pcap_loop(adhandle, 0, packet_handler, NULL); 当我点击“开
我正在尝试开发一个基于 C 的应用程序,它嵌入了一个或多个 Python 解释器。我在 C 部分中使用 gtk-things,并在其中合理地调用 gtk_main()。 Python 解释器是使用 P
我刚刚在树莓派 3 上开始了我的第一个 C 语言项目,我想为触摸屏创建我的第一个 GUI 应用程序。我的目标是运行 while(1) 循环来控制树莓派 I/O 和 gtk_main 函数来打开一个简单
我正在尝试用 C 语言编写一个使用 gstreamer 的 GTK+ 应用程序。 GTK+ 需要 gtk_main() 来执行。 gstreamer 需要 g_main_loop_run() 来执行。
我是一名优秀的程序员,十分优秀!