(self)
Return frame of widgets for Windows tab.

        Enable users to provisionally change general window options.
        Function load_windows_cfg initializes tk variable idleConf.
        Radiobuttons startup_shell_on and startup_editor_on set var
        startup_edit. Entry boxes win_width_int and win_height_int set var
        win_width and win_height.  Setting var_name invokes the default
        callback that adds option to changes.

        Widgets for WinPage(Frame):  > vars, bound to self
            frame_window: LabelFrame
                frame_run: Frame
                    startup_title: Label
                    startup_editor_on: Radiobutton > startup_edit
                    startup_shell_on: Radiobutton > startup_edit
                frame_win_size: Frame
                    win_size_title: Label
                    win_width_title: Label
                    win_width_int: Entry > win_width
                    win_height_title: Label
                    win_height_int: Entry > win_height
                frame_cursor: Frame
                    indent_title: Label
                    indent_chooser: Spinbox (Combobox < 8.5.9) > indent_spaces
                    blink_on: Checkbutton > cursor_blink
                frame_autocomplete: Frame
                    auto_wait_title: Label
                    auto_wait_int: Entry > autocomplete_wait
                frame_paren1: Frame
                    paren_style_title: Label
                    paren_style_type: OptionMenu > paren_style
                frame_paren2: Frame
                    paren_time_title: Label
                    paren_flash_time: Entry > flash_delay
                    bell_on: Checkbutton > paren_bell
                frame_format: Frame
                    format_width_title: Label
                    format_width_int: Entry > format_width
Return frame of widgets for Windows tab.
Return frame of widgets for Windows tab .
def create_page_windows(self):
        """Return frame of widgets for Windows tab.

        Enable users to provisionally change general window options.
        Function load_windows_cfg initializes tk variable idleConf.
        Radiobuttons startup_shell_on and startup_editor_on set var
        startup_edit. Entry boxes win_width_int and win_height_int set var
        win_width and win_height.  Setting var_name invokes the default
        callback that adds option to changes.

        Widgets for WinPage(Frame):  > vars, bound to self
            frame_window: LabelFrame
                frame_run: Frame
                    startup_title: Label
                    startup_editor_on: Radiobutton > startup_edit
                    startup_shell_on: Radiobutton > startup_edit
                frame_win_size: Frame
                    win_size_title: Label
                    win_width_title: Label
                    win_width_int: Entry > win_width
                    win_height_title: Label
                    win_height_int: Entry > win_height
                frame_cursor: Frame
                    indent_title: Label
                    indent_chooser: Spinbox (Combobox < 8.5.9) > indent_spaces
                    blink_on: Checkbutton > cursor_blink
                frame_autocomplete: Frame
                    auto_wait_title: Label
                    auto_wait_int: Entry > autocomplete_wait
                frame_paren1: Frame
                    paren_style_title: Label
                    paren_style_type: OptionMenu > paren_style
                frame_paren2: Frame
                    paren_time_title: Label
                    paren_flash_time: Entry > flash_delay
                    bell_on: Checkbutton > paren_bell
                frame_format: Frame
                    format_width_title: Label
                    format_width_int: Entry > format_width
        """
        # Integer values need StringVar because int('') raises.
        self.startup_edit = tracers.add(
                IntVar(self), ('main', 'General', 'editor-on-startup'))
        self.win_width = tracers.add(
                StringVar(self), ('main', 'EditorWindow', 'width'))
        self.win_height = tracers.add(
                StringVar(self), ('main', 'EditorWindow', 'height'))
        self.indent_spaces = tracers.add(
                StringVar(self), ('main', 'Indent', 'num-spaces'))
        self.cursor_blink = tracers.add(
                BooleanVar(self), ('main', 'EditorWindow', 'cursor-blink'))
        self.autocomplete_wait = tracers.add(
                StringVar(self), ('extensions', 'AutoComplete', 'popupwait'))
        self.paren_style = tracers.add(
                StringVar(self), ('extensions', 'ParenMatch', 'style'))
        self.flash_delay = tracers.add(
                StringVar(self), ('extensions', 'ParenMatch', 'flash-delay'))
        self.paren_bell = tracers.add(
                BooleanVar(self), ('extensions', 'ParenMatch', 'bell'))
        self.format_width = tracers.add(
                StringVar(self), ('extensions', 'FormatParagraph', 'max-width'))

        # Create widgets:
        frame_window = LabelFrame(self, borderwidth=2, relief=GROOVE,
                                  text=' Window Preferences')

        frame_run = Frame(frame_window, borderwidth=0)
        startup_title = Label(frame_run, text='At Startup')
        self.startup_editor_on = Radiobutton(
                frame_run, variable=self.startup_edit, value=1,
                text="Open Edit Window")
        self.startup_shell_on = Radiobutton(
                frame_run, variable=self.startup_edit, value=0,
                text='Open Shell Window')

        frame_win_size = Frame(frame_window, borderwidth=0)
        win_size_title = Label(
                frame_win_size, text='Initial Window Size  (in characters)')
        win_width_title = Label(frame_win_size, text='Width')
        self.win_width_int = Entry(
                frame_win_size, textvariable=self.win_width, width=3,
                validatecommand=self.digits_only, validate='key',
        )
        win_height_title = Label(frame_win_size, text='Height')
        self.win_height_int = Entry(
                frame_win_size, textvariable=self.win_height, width=3,
                validatecommand=self.digits_only, validate='key',
        )

        frame_cursor = Frame(frame_window, borderwidth=0)
        indent_title = Label(frame_cursor,
                             text='Indent spaces (4 is standard)')
        try:
            self.indent_chooser = Spinbox(
                    frame_cursor, textvariable=self.indent_spaces,
                    from_=1, to=10, width=2,
                    validatecommand=self.digits_only, validate='key')
        except TclError:
            self.indent_chooser = Combobox(
                    frame_cursor, textvariable=self.indent_spaces,
                    state="readonly", values=list(range(1,11)), width=3)
        cursor_blink_title = Label(frame_cursor, text='Cursor Blink')
        self.cursor_blink_bool = Checkbutton(frame_cursor, text="Cursor blink",
                                             variable=self.cursor_blink)

        frame_autocomplete = Frame(frame_window, borderwidth=0,)
        auto_wait_title = Label(frame_autocomplete,
                                text='Completions Popup Wait (milliseconds)')
        self.auto_wait_int = Entry(
                frame_autocomplete, textvariable=self.autocomplete_wait,
                width=6, validatecommand=self.digits_only, validate='key')

        frame_paren1 = Frame(frame_window, borderwidth=0)
        paren_style_title = Label(frame_paren1, text='Paren Match Style')
        self.paren_style_type = OptionMenu(
                frame_paren1, self.paren_style, 'expression',
                "opener","parens","expression")
        frame_paren2 = Frame(frame_window, borderwidth=0)
        paren_time_title = Label(
                frame_paren2, text='Time Match Displayed (milliseconds)\n'
                                  '(0 is until next input)')
        self.paren_flash_time = Entry(
                frame_paren2, textvariable=self.flash_delay, width=6,
                validatecommand=self.digits_only, validate='key')
        self.bell_on = Checkbutton(
                frame_paren2, text="Bell on Mismatch", variable=self.paren_bell)
        frame_format = Frame(frame_window, borderwidth=0)
        format_width_title = Label(frame_format,
                                   text='Format Paragraph Max Width')
        self.format_width_int = Entry(
                frame_format, textvariable=self.format_width, width=4,
                validatecommand=self.digits_only, validate='key',
                )

        # Pack widgets:
        frame_window.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH)
        # frame_run.
        frame_run.pack(side=TOP, padx=5, pady=0, fill=X)
        startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
        self.startup_shell_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
        self.startup_editor_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
        # frame_win_size.
        frame_win_size.pack(side=TOP, padx=5, pady=0, fill=X)
        win_size_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
        self.win_height_int.pack(side=RIGHT, anchor=E, padx=10, pady=5)
        win_height_title.pack(side=RIGHT, anchor=E, pady=5)
        self.win_width_int.pack(side=RIGHT, anchor=E, padx=10, pady=5)
        win_width_title.pack(side=RIGHT, anchor=E, pady=5)
        # frame_cursor.
        frame_cursor.pack(side=TOP, padx=5, pady=0, fill=X)
        indent_title.pack(side=LEFT, anchor=W, padx=5)
        self.indent_chooser.pack(side=LEFT, anchor=W, padx=10)
        self.cursor_blink_bool.pack(side=RIGHT, anchor=E, padx=15, pady=5)
        # frame_autocomplete.
        frame_autocomplete.pack(side=TOP, padx=5, pady=0, fill=X)
        auto_wait_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
        self.auto_wait_int.pack(side=TOP, padx=10, pady=5)
        # frame_paren.
        frame_paren1.pack(side=TOP, padx=5, pady=0, fill=X)
        paren_style_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
        self.paren_style_type.pack(side=TOP, padx=10, pady=5)
        frame_paren2.pack(side=TOP, padx=5, pady=0, fill=X)
        paren_time_title.pack(side=LEFT, anchor=W, padx=5)
        self.bell_on.pack(side=RIGHT, anchor=E, padx=15, pady=5)
        self.paren_flash_time.pack(side=TOP, anchor=W, padx=15, pady=5)
        # frame_format.
        frame_format.pack(side=TOP, padx=5, pady=0, fill=X)
        format_width_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
        self.format_width_int.pack(side=TOP, padx=10, pady=5)
def create_page_windows ( self ) : # Integer values need StringVar because int('') raises. self . startup_edit = tracers . add ( IntVar ( self ) , ( 'main' , 'General' , 'editor-on-startup' ) ) self . win_width = tracers . add ( StringVar ( self ) , ( 'main' , 'EditorWindow' , 'width' ) ) self . win_height = tracers . add ( StringVar ( self ) , ( 'main' , 'EditorWindow' , 'height' ) ) self . indent_spaces = tracers . add ( StringVar ( self ) , ( 'main' , 'Indent' , 'num-spaces' ) ) self . cursor_blink = tracers . add ( BooleanVar ( self ) , ( 'main' , 'EditorWindow' , 'cursor-blink' ) ) self . autocomplete_wait = tracers . add ( StringVar ( self ) , ( 'extensions' , 'AutoComplete' , 'popupwait' ) ) self . paren_style = tracers . add ( StringVar ( self ) , ( 'extensions' , 'ParenMatch' , 'style' ) ) self . flash_delay = tracers . add ( StringVar ( self ) , ( 'extensions' , 'ParenMatch' , 'flash-delay' ) ) self . paren_bell = tracers . add ( BooleanVar ( self ) , ( 'extensions' , 'ParenMatch' , 'bell' ) ) self . format_width = tracers . add ( StringVar ( self ) , ( 'extensions' , 'FormatParagraph' , 'max-width' ) ) # Create widgets: frame_window = LabelFrame ( self , borderwidth = 2 , relief = GROOVE , text = ' Window Preferences' ) frame_run = Frame ( frame_window , borderwidth = 0 ) startup_title = Label ( frame_run , text = 'At Startup' ) self . startup_editor_on = Radiobutton ( frame_run , variable = self . startup_edit , value = 1 , text = "Open Edit Window" ) self . startup_shell_on = Radiobutton ( frame_run , variable = self . startup_edit , value = 0 , text = 'Open Shell Window' ) frame_win_size = Frame ( frame_window , borderwidth = 0 ) win_size_title = Label ( frame_win_size , text = 'Initial Window Size  (in characters)' ) win_width_title = Label ( frame_win_size , text = 'Width' ) self . win_width_int = Entry ( frame_win_size , textvariable = self . win_width , width = 3 , validatecommand = self . digits_only , validate = 'key' , ) win_height_title = Label ( frame_win_size , text = 'Height' ) self . win_height_int = Entry ( frame_win_size , textvariable = self . win_height , width = 3 , validatecommand = self . digits_only , validate = 'key' , ) frame_cursor = Frame ( frame_window , borderwidth = 0 ) indent_title = Label ( frame_cursor , text = 'Indent spaces (4 is standard)' ) try : self . indent_chooser = Spinbox ( frame_cursor , textvariable = self . indent_spaces , from_ = 1 , to = 10 , width = 2 , validatecommand = self . digits_only , validate = 'key' ) except TclError : self . indent_chooser = Combobox ( frame_cursor , textvariable = self . indent_spaces , state = "readonly" , values = list ( range ( 1 , 11 ) ) , width = 3 ) cursor_blink_title = Label ( frame_cursor , text = 'Cursor Blink' ) self . cursor_blink_bool = Checkbutton ( frame_cursor , text = "Cursor blink" , variable = self . cursor_blink ) frame_autocomplete = Frame ( frame_window , borderwidth = 0 , ) auto_wait_title = Label ( frame_autocomplete , text = 'Completions Popup Wait (milliseconds)' ) self . auto_wait_int = Entry ( frame_autocomplete , textvariable = self . autocomplete_wait , width = 6 , validatecommand = self . digits_only , validate = 'key' ) frame_paren1 = Frame ( frame_window , borderwidth = 0 ) paren_style_title = Label ( frame_paren1 , text = 'Paren Match Style' ) self . paren_style_type = OptionMenu ( frame_paren1 , self . paren_style , 'expression' , "opener" , "parens" , "expression" ) frame_paren2 = Frame ( frame_window , borderwidth = 0 ) paren_time_title = Label ( frame_paren2 , text = 'Time Match Displayed (milliseconds)\n' '(0 is until next input)' ) self . paren_flash_time = Entry ( frame_paren2 , textvariable = self . flash_delay , width = 6 , validatecommand = self . digits_only , validate = 'key' ) self . bell_on = Checkbutton ( frame_paren2 , text = "Bell on Mismatch" , variable = self . paren_bell ) frame_format = Frame ( frame_window , borderwidth = 0 ) format_width_title = Label ( frame_format , text = 'Format Paragraph Max Width' ) self . format_width_int = Entry ( frame_format , textvariable = self . format_width , width = 4 , validatecommand = self . digits_only , validate = 'key' , ) # Pack widgets: frame_window . pack ( side = TOP , padx = 5 , pady = 5 , expand = TRUE , fill = BOTH ) # frame_run. frame_run . pack ( side = TOP , padx = 5 , pady = 0 , fill = X ) startup_title . pack ( side = LEFT , anchor = W , padx = 5 , pady = 5 ) self . startup_shell_on . pack ( side = RIGHT , anchor = W , padx = 5 , pady = 5 ) self . startup_editor_on . pack ( side = RIGHT , anchor = W , padx = 5 , pady = 5 ) # frame_win_size. frame_win_size . pack ( side = TOP , padx = 5 , pady = 0 , fill = X ) win_size_title . pack ( side = LEFT , anchor = W , padx = 5 , pady = 5 ) self . win_height_int . pack ( side = RIGHT , anchor = E , padx = 10 , pady = 5 ) win_height_title . pack ( side = RIGHT , anchor = E , pady = 5 ) self . win_width_int . pack ( side = RIGHT , anchor = E , padx = 10 , pady = 5 ) win_width_title . pack ( side = RIGHT , anchor = E , pady = 5 ) # frame_cursor. frame_cursor . pack ( side = TOP , padx = 5 , pady = 0 , fill = X ) indent_title . pack ( side = LEFT , anchor = W , padx = 5 ) self . indent_chooser . pack ( side = LEFT , anchor = W , padx = 10 ) self . cursor_blink_bool . pack ( side = RIGHT , anchor = E , padx = 15 , pady = 5 ) # frame_autocomplete. frame_autocomplete . pack ( side = TOP , padx = 5 , pady = 0 , fill = X ) auto_wait_title . pack ( side = LEFT , anchor = W , padx = 5 , pady = 5 ) self . auto_wait_int . pack ( side = TOP , padx = 10 , pady = 5 ) # frame_paren. frame_paren1 . pack ( side = TOP , padx = 5 , pady = 0 , fill = X ) paren_style_title . pack ( side = LEFT , anchor = W , padx = 5 , pady = 5 ) self . paren_style_type . pack ( side = TOP , padx = 10 , pady = 5 ) frame_paren2 . pack ( side = TOP , padx = 5 , pady = 0 , fill = X ) paren_time_title . pack ( side = LEFT , anchor = W , padx = 5 ) self . bell_on . pack ( side = RIGHT , anchor = E , padx = 15 , pady = 5 ) self . paren_flash_time . pack ( side = TOP , anchor = W , padx = 15 , pady = 5 ) # frame_format. frame_format . pack ( side = TOP , padx = 5 , pady = 0 , fill = X ) format_width_title . pack ( side = LEFT , anchor = W , padx = 5 , pady = 5 ) self . format_width_int . pack ( side = TOP , padx = 10 , pady = 5 )