我的问题在于,我已将GtkImage替换为GtkDrawingArea小部件,并且滚动时不像GtkImage那样。
这就是我同时放置GtkImage和GtkDrawingArea的方式。
我认为这已经足够了。
使用GtkImage::我水平和垂直滚动,GtkImageViewport加载了应该显示的PixBuf部分,如您在此处看到的那样:
使用GtkDrawingArea:,滚动条占据了所有可用区域,因此图像不会移动,如您在此处看到的那样:
如果我调整窗口大小,则会出现图像的不可见部分,并且在滚动时应该可见:
注意1::我希望能够在图像上绘制并使用像素坐标,这就是为什么我认为使用Gtk.DrawingArea和Cairo是个好主意的原因。
注意2:我已经通过Glade和使用scrolledwindow.add_with_viewport(drawing_area)的代码进行了尝试
答案 0 :(得分:1)
正如Nico238所建议的那样,我没有明确要求为DrawingArea提供该区域。现在,我根据正在绘制的图像设置了DrawingArea尺寸。
''' 'draw' callback method. '''
def __on_draw_drawing_area(self, widget, cairo_context):
if len(self.__store) > 0:
# The PixBuf to draw
image = self.__store_dictionary[self.__active_sample_id]['displayed_image']
# This was the missing line.
self.__w_drawing_area.set_size_request(image.get_width(), image.get_height())
# Add the image to the Cairo context and draw
Gdk.cairo_set_source_pixbuf(cairo_context, image, 0, 0)
cairo_context.paint()