はじめまして。
python3.6を使用して、GUIを作成しています。
Canvasに配置されるobjectsの範囲内で、scrollbarを操作させたいと考えていますが、方法が分かりません。
以下のコードは、scrollbarにバインドした、canvas_x、canvas_yにおいて、何等か記述すれば細かく制御できるかと思うのです。info関数は、canvasが現在どの範囲のcanvas内座標を表示しているか確認するためのものです。
bboxメソッドで現在のobjectsの座標範囲が取得できるため、これを利用しようと思うのですが、scrollbarへの移動範囲設定やノブの表示方法が分かりません。
どなたか実装方法をご存じないでしょうか。
よろしくお願いします。

Tkinter 8.5 referenceを確認したところ、canvasウィジット作成時に、scrollregionオプションを入れることで、スクロール範囲が設定できることが分かりました。
ウィジット作成後に、このscrollregionオプションの変更の仕方をご存知であれば、ご教示をお願いいたします。

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import tkinter as tk
from tkinter import ttk


class CreateScreen(object):
    def __init__(self):
        self.screen_w = 800
        self.screen_h = 600
        self.dlg_pos_x = 100
        self.dlg_pos_y = 100

        return super().__init__()

    def createMainWindow(self):

        obj = ttk.tkinter.Tk() 

        geo_string = str(self.screen_w) + "x" + str(self.screen_h) + "+" + str(self.dlg_pos_x)  + "+" + str(self.dlg_pos_y) 

        obj.geometry(geo_string) 

        return obj

    def btn_area(self, parent):
        _if_bt_w = int(self.screen_w)
        _if_bt_h = int(self.screen_h)

        self._InFrame_ = ttk.Frame(
            parent,
            width = _if_bt_w,
            height = _if_bt_h
            )

        self._Canvas = tk.Canvas(
            self._InFrame_,
            background = 'beige',
            scrollregion=(-1000, -500, 1200, 800)
            )

        self.canvas = self._Canvas


        self._InFrame_.grid(row = 0,column = 0, sticky = tk.E+tk.W)
        self._Canvas.grid(row = 0,column = 0, sticky = tk.N+tk.E+tk.S+tk.W)


        self._InFrame_.columnconfigure(0, minsize = 760)
        self._InFrame_.rowconfigure(0, minsize = 560)


        self.canvas_v_scroll = ttk.Scrollbar(
            self._InFrame_,
            orient = tk.VERTICAL,
            command = self.canvas_y
            )

        self.canvas['yscrollcommand'] = self.canvas_v_scroll.set

        self.canvas_h_scroll = ttk.Scrollbar(
            self._InFrame_,
            orient = tk.HORIZONTAL,
            command = self.canvas_x
            )

        self.canvas['xscrollcommand'] = self.canvas_h_scroll.set

        self.canvas_v_scroll.grid(row = 0,column = 1, sticky = tk.N+tk.E+tk.S+tk.W)
        self.canvas_h_scroll.grid(row = 1,column = 0, sticky = tk.N+tk.E+tk.S+tk.W)

        self.maker1 = self.canvas.create_rectangle(200,100,300,200,fill='blue',tags = 'r1')
        self.maker2 = self.canvas.create_rectangle(-100,-100,100,100,fill='green',tags = 'r2')
        self.maker3 = self.canvas.create_rectangle(400,400,250,250,fill='yellow',tags = 'r3')


        return

    def canvas_x(self,*args, **kwargs):

        for a in args:
            print(a)

        for b in kwargs:
            print(b)

        self.canvas.xview(*args, **kwargs)
        self.info()

        return

    def canvas_y(self,*args, **kwargs):

        for a in args:
            print(a)

        for b in kwargs:
            print(b)

        self.canvas.yview(*args, **kwargs)
        self.info()

        return

    def info(self):
        x = self.canvas.winfo_x()
        y = self.canvas.winfo_y()
        w = self.canvas.winfo_width()
        h = self.canvas.winfo_height()
        print(x,y,w,h)

        cx1 = self.canvas.canvasx(x)
        cy1 = self.canvas.canvasy(y)
        cx2 = self.canvas.canvasx(x+w)
        cy2 = self.canvas.canvasy(y+h)

        print(cx1,cy1,cx2,cy2)
        self.canvas.bbox("all")
        return

if __name__ == '__main__':
    screen_obj = CreateScreen()

    MainWindow_obj = screen_obj.createMainWindow()

    MainFrame = ttk.Frame(
        MainWindow_obj,
        class_ = 'MainApplication',
        borderwidth = 0
        )

    screen_obj.btn_area(MainWindow_obj)

    MainWindow_obj.mainloop()