2024-05-14 03:46:11 发布
网友
在GTK3中,如何使用gtk_*_new_*()构造函数?你知道吗
gtk_*_new_*()
例如,考虑:
GtkWidget * gtk_recent_chooser_menu_new_for_manager ()
我怎么用?你知道吗
我正在尝试移植PyGTK2程序,我可以通过执行以下操作来解决gtk_text_view_new_with_buffer()之类的问题:
gtk_text_view_new_with_buffer()
view = Gtk.TextView() view.set_buffer(buffer)
是否可以直接使用这些函数?你知道吗
我想出来了。你知道吗
显然,你可以使用以下方法:
view = Gtk.TextView.new_with_buffer(buffer)
有趣的是,Gtk.TextView.new() == Gtk.TextView()
Gtk.TextView.new() == Gtk.TextView()
C API中的各种_new构造函数,包括基本的_new()构造函数,只是g_object_new()的包装器。像type_new_with_foo()这样的构造函数对于C开发人员来说只是方便的函数,可以在调用g_object_new()和属性设置时提供一些类型安全性;因此,例如gtk_recent_chooser_menu_new()就是:
_new
_new()
g_object_new()
type_new_with_foo()
gtk_recent_chooser_menu_new()
return g_object_new (GTK_TYPE_RECENT_CHOOSER_MENU, NULL);
而gtk_recent_chooser_menu_new_for_manager()是:
gtk_recent_chooser_menu_new_for_manager()
return g_object_new (GTK_TYPE_RECENT_CHOOSER_MENU, "recent-manager", manager, NULL);
即设置(仅限构造函数)“recent manager”属性的方法。你知道吗
Python绑定不调用C API来构造对象;Python构造函数的标准形式,例如:
button = Gtk.Button()
相当于调用g_object_new(GTK_TYPE_BUTTON, NULL)。构造函数范式接受参数,其形式为属性名称和值的字典:
g_object_new(GTK_TYPE_BUTTON, NULL)
button = Gtk.Button(label='Hello, world')
这相当于在C中调用gtk_button_new_with_label()。Python绑定层将在运行时提供所有必要的类型安全性。你知道吗
gtk_button_new_with_label()
通常建议使用这种方法,而不是调用C API,因为:
我想出来了。你知道吗
显然,你可以使用以下方法:
有趣的是,
Gtk.TextView.new() == Gtk.TextView()
C API中的各种
_new
构造函数,包括基本的_new()
构造函数,只是g_object_new()
的包装器。像type_new_with_foo()
这样的构造函数对于C开发人员来说只是方便的函数,可以在调用g_object_new()
和属性设置时提供一些类型安全性;因此,例如gtk_recent_chooser_menu_new()
就是:而
gtk_recent_chooser_menu_new_for_manager()
是:即设置(仅限构造函数)“recent manager”属性的方法。你知道吗
Python绑定不调用C API来构造对象;Python构造函数的标准形式,例如:
相当于调用
g_object_new(GTK_TYPE_BUTTON, NULL)
。构造函数范式接受参数,其形式为属性名称和值的字典:这相当于在C中调用
gtk_button_new_with_label()
。Python绑定层将在运行时提供所有必要的类型安全性。你知道吗通常建议使用这种方法,而不是调用C API,因为:
相关问题 更多 >
编程相关推荐