(self)
Configure IDLE feature extensions and help menu extensions.

        List the feature extensions and a configuration box for the
        selected extension.  Help menu extensions are in a HelpFrame.

        This code reads the current configuration using idleConf,
        supplies a GUI interface to change the configuration values,
        and saves the changes using idleConf.

        Some changes may require restarting IDLE.  This depends on each
        extension's implementation.

        All values are treated as text, and it is up to the user to
        supply reasonable values. The only exception to this are the
        'enable*' options, which are boolean, and can be toggled with a
        True/False button.

        Methods:
            extension_selected: Handle selection from list.
            create_extension_frame: Hold widgets for one extension.
            set_extension_value: Set in userCfg['extensions'].
            save_all_changed_extensions: Call extension page Save().
Configure IDLE feature extensions and help menu extensions.
Configure IDLE feature extensions and help menu extensions .
def create_page_extensions(self):
        """Configure IDLE feature extensions and help menu extensions.

        List the feature extensions and a configuration box for the
        selected extension.  Help menu extensions are in a HelpFrame.

        This code reads the current configuration using idleConf,
        supplies a GUI interface to change the configuration values,
        and saves the changes using idleConf.

        Some changes may require restarting IDLE.  This depends on each
        extension's implementation.

        All values are treated as text, and it is up to the user to
        supply reasonable values. The only exception to this are the
        'enable*' options, which are boolean, and can be toggled with a
        True/False button.

        Methods:
            extension_selected: Handle selection from list.
            create_extension_frame: Hold widgets for one extension.
            set_extension_value: Set in userCfg['extensions'].
            save_all_changed_extensions: Call extension page Save().
        """
        self.extension_names = StringVar(self)

        frame_ext = LabelFrame(self, borderwidth=2, relief=GROOVE,
                               text=' Feature Extensions ')
        self.frame_help = HelpFrame(self, borderwidth=2, relief=GROOVE,
                               text=' Help Menu Extensions ')

        frame_ext.rowconfigure(0, weight=1)
        frame_ext.columnconfigure(2, weight=1)
        self.extension_list = Listbox(frame_ext, listvariable=self.extension_names,
                                      selectmode='browse')
        self.extension_list.bind('<<ListboxSelect>>', self.extension_selected)
        scroll = Scrollbar(frame_ext, command=self.extension_list.yview)
        self.extension_list.yscrollcommand=scroll.set
        self.details_frame = LabelFrame(frame_ext, width=250, height=250)
        self.extension_list.grid(column=0, row=0, sticky='nws')
        scroll.grid(column=1, row=0, sticky='ns')
        self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0])
        frame_ext.configure(padding=10)
        self.config_frame = {}
        self.current_extension = None

        self.outerframe = self                      # TEMPORARY
        self.tabbed_page_set = self.extension_list  # TEMPORARY

        # Create the frame holding controls for each extension.
        ext_names = ''
        for ext_name in sorted(self.extensions):
            self.create_extension_frame(ext_name)
            ext_names = ext_names + '{' + ext_name + '} '
        self.extension_names.set(ext_names)
        self.extension_list.selection_set(0)
        self.extension_selected(None)


        frame_ext.grid(row=0, column=0, sticky='nsew')
        Label(self).grid(row=1, column=0)  # Spacer.  Replace with config?
        self.frame_help.grid(row=2, column=0, sticky='sew')
def create_page_extensions ( self ) : self . extension_names = StringVar ( self ) frame_ext = LabelFrame ( self , borderwidth = 2 , relief = GROOVE , text = ' Feature Extensions ' ) self . frame_help = HelpFrame ( self , borderwidth = 2 , relief = GROOVE , text = ' Help Menu Extensions ' ) frame_ext . rowconfigure ( 0 , weight = 1 ) frame_ext . columnconfigure ( 2 , weight = 1 ) self . extension_list = Listbox ( frame_ext , listvariable = self . extension_names , selectmode = 'browse' ) self . extension_list . bind ( '<<ListboxSelect>>' , self . extension_selected ) scroll = Scrollbar ( frame_ext , command = self . extension_list . yview ) self . extension_list . yscrollcommand = scroll . set self . details_frame = LabelFrame ( frame_ext , width = 250 , height = 250 ) self . extension_list . grid ( column = 0 , row = 0 , sticky = 'nws' ) scroll . grid ( column = 1 , row = 0 , sticky = 'ns' ) self . details_frame . grid ( column = 2 , row = 0 , sticky = 'nsew' , padx = [ 10 , 0 ] ) frame_ext . configure ( padding = 10 ) self . config_frame = { } self . current_extension = None self . outerframe = self # TEMPORARY self . tabbed_page_set = self . extension_list # TEMPORARY # Create the frame holding controls for each extension. ext_names = '' for ext_name in sorted ( self . extensions ) : self . create_extension_frame ( ext_name ) ext_names = ext_names + '{' + ext_name + '} ' self . extension_names . set ( ext_names ) self . extension_list . selection_set ( 0 ) self . extension_selected ( None ) frame_ext . grid ( row = 0 , column = 0 , sticky = 'nsew' ) Label ( self ) . grid ( row = 1 , column = 0 ) # Spacer.  Replace with config? self . frame_help . grid ( row = 2 , column = 0 , sticky = 'sew' )