我正在使用 PyGTK,试图提出一个可以执行以下操作的小部件组合:
谢谢 - 我是 GTK 的新手。
现在开始了。如果您只是按照上面列出的操作进行操作,VBox 的内容将尝试在垂直方向和水平方向调整大小,您将无法获得滚动条。解决方案是将 VBox 放在 GtkViewport 中。
所以最终的层次结构是 ScrolledWindow( Viewport( VBox( widgets ) ) ).
史蒂夫在代码中说的话:
vbox = gtk.VBox()
vbox.pack_start(widget1, 1, 1) ## fill and expand
vbox.pack_start(widget2, 1, 1) ## fill and expand
vbox.pack_start(widget3, 1, 1) ## fill and expand
swin = gtk.ScrolledWindow()
swin.add_with_viewport(vbox)
我是一名 C 开发人员,正在开发 GTK4 应用程序。我在 Google 上搜索“gtk4 如何使小部件可滚动”将我带到这里!
很难找到一个我可以编译和运行的在 C API 中使用 GtkScrolledWindow 的最小示例,所以我想在这里分享一个,我只是在一个始终可见的标签周围添加了一个滚动条。
/* scrolledwindow.c
*
* Example of putting a GtkLabel in a GtkScrolledWindow.
*
* COMPILE
*
* gcc `pkg-config --cflags gtk4` -o scrolledwindow scrolledwindow.c `pkg-config --libs gtk4`
*
* RUN
*
* ./scrolledwindow
*/
#include <gtk/gtk.h>
#if GLIB_CHECK_VERSION(2, 74, 0)
#define APP_FLAGS G_APPLICATION_DEFAULT_FLAGS
#else
#define APP_FLAGS G_APPLICATION_FLAGS_NONE
#endif
static void
activate( GtkApplication *app, gpointer user_data )
{
GtkWidget *window, *vbox, *scrolled_window, *label;
window = gtk_application_window_new( app );
gtk_window_set_default_size (GTK_WINDOW (window), 100, 50);
vbox = gtk_box_new( GTK_ORIENTATION_VERTICAL, 10 );
scrolled_window = gtk_scrolled_window_new();
label = gtk_label_new("<0.o>");
gtk_scrolled_window_set_child( GTK_SCROLLED_WINDOW( scrolled_window ),
label );
gtk_box_append( GTK_BOX( vbox ), scrolled_window );
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolled_window ),
GTK_POLICY_NEVER,
GTK_POLICY_ALWAYS );
gtk_window_set_child( GTK_WINDOW( window ), vbox );
gtk_widget_show( window );
}
int
main( int argc, char **argv )
{
GtkApplication *app;
int status;
puts("Hover to the right of the label to see the scrollbar.");
app = gtk_application_new( "org.gtk.example", APP_FLAGS );
g_signal_connect( app, "activate", G_CALLBACK( activate ), NULL );
status = g_application_run( G_APPLICATION( app ), argc, argv );
g_object_unref( app );
return status;
}