Properties Window
Prev | Chapter 3. wxGlade User Interface | Next

## Properties Window

The properties window lets you see and edit the properties that apply to the selected element. This window consists up to six different tabs. All six tabs are not always present. The visibility of the single tabs depends on the widget type. Most widgets have a “Common” tab and a “Code” tab. The combination of presented tabs depends on the widget type.

For example:

- `wxFrame` widgets have “Common”, “Widget” and “Code” tabs

- Spacers have the tabs “Layout” and “Code”

- `wxGridSizer` widgets have “Common” and “Grid”

- `wxBoxSizer` widgets only have the “Common” tab

Editing properties is quite simple; Properties are represented by buttons, text boxes, checks and other controls. Usually they are referenced by the same name or symbol that you find writing C++ code.

Usually you get the changes in the design window in real time. In some cases you have to push the “Apply” button. For example, the `wxNotebook` widget shows in its properties window a list of child `wxPanel`s. You have to press the “Apply” button to show changes you make when you add or remove panels.

You can show or hide the properties window by the menu item View → Show Properties.

### Application Properties

The page “Application” contains the general settings of the active wxGlade project.

Figure 3.6. Project Properties - Application settings

“Name”

  Name of the instance created from “Class”

  the section called “Automatically created `wxApp` instance” provides more information

“Class”

  Name of the automatically generated class derived from `wxApp`

  the section called “Automatically created `wxApp` instance” provides more information

“Encoding”

  Encoding of the generated source files.

  The encoding to use with new projects will be determinated automatically based on the machine settings. “UTF-8” will be used if the automatic detection fails.

“Enable gettext support”

  Enable internationalisation and localisation for the generated source files

“Top window”

  This widget is used as top window in the `wxApp` start code

  the section called “Automatically created `wxApp` instance” provides more information

“Code Generation”

  Write all source code in one file or split the source into one file per class / widget

  the section called “Using the source code” provides more information

“Language”

  Programming language to generate the source files in

“wxWidgets compatibility”

  Generate source files for the selected wxWidgets version

“Overwrite existing sources”

  Overwrite existing source files or modify the code sequences generated by wxGlade in place

  the section called “Using the source code” provides more information

“Output path”

  Output file or directory

  the section called “Output path and filenames” provides more information

“Generate code”

  Start generating source files

The page “Settings” contains the language specific settings of the active wxGlade project.

Figure 3.7. Project Properties - Language settings

“Indentation mode”

  Use spaces or tabs for indentation within the generated source files.

“Indentation amount”

  Number of spaces or tabs used for one indentation level.

“Use old import "from wxPython.wx import *"”

  It is generally recommended to use the new namespace.

  The old one (“from wxPython.wx import *”) has some significant drawbacks like potential namespace conflicts.

“Source ext”

  Extension of the source file.

  The extension doesn't has a leading dot.

“Header ext”

  Extension of the header file.

  The extension doesn't has a leading dot.

### Common Properties

The first tab contains the common properties that apply to all widgets. As shown in Figure 3.8, “Common Properties” the common properties are related to name, class, size, colors, fonts and tooltip.

Figure 3.8. Common Properties

The property name is a mangled version of the wxWidgets property name. The property input field is disabled by default. wxGlade won't use disabled properties for code generation. wxWidgets defaults are used instead.

Enable the property in the wxGlade GUI to set non-default values (see Figure 3.9, “Changing Common Properties”).

Figure 3.9. Changing Common Properties

“Name”

  Name of the instance created from “Class”

“Class”

  Name of the subclass of the widget. How this name affects code generation depends on the output language.

  Figure 3.10. Common Properties of a subclassed widget (default behaviour)

  Example 3.1. Generated Python code of a subclassed widget

      class MyDialog(wxDialog):
          def __init__(self, *args, **kwds):
              # begin wxGlade: MyDialog.__init__
              kwds["style"] = wxDEFAULT_DIALOG_STYLE
              wxDialog.__init__(self, *args, **kwds)

“Base class(es)”

  A comma-separated list of custom base classes. The first will be invoked with the same parameters as this class, while for the others the default constructor will be used. This property will be shown only for non-managed widgets for instance `wxFrame`, `wxDialog`, `wxNotebook`, `wxPanel` and `wxSplitterWindow`. You should probably not use this if “overwrite existing sources” is not set.

  Figure 3.11. Common Properties with Base class(es) entry

  Example 3.2. Generated Python code of a widget with two base classes

      class MyFrame(myFrameMixin, wxFrame):
          def __init__(self, *args, **kwds):
              # begin wxGlade: MyFrame.__init__
              kwds["style"] = wx.DEFAULT_FRAME_STYLE
              myFrameMixin.__init__(self, *args, **kwds)
              wxFrame.__init__(self)

“Id”

  This property could be

  - a constant numeric value

  - a predefined identifier e.g. `wxID_ANY`

  - a predefined variable like a class member e.g. self.myButtonID

  - a variable assignment e.g. “self.myButtonID=?” The pattern of a variable assignment is always “variable=value”. The value could be again a numeric value, a predefined identifier, another predefined variable or “?” a shortcut for “wxNewId()”

  Figure 3.12. Common Properties with a variable assignment

  Example 3.3. Generated Python code for a variable assignment

      class MyFrame(wx.Frame):
          def __init__(self, *args, **kwds):
              # begin wxGlade: MyFrame.__init__
              kwds["style"] = wx.DEFAULT_FRAME_STYLE
              wx.Frame.__init__(self, *args, **kwds)
              self.myButtonID = wx.NewId()
              self.button_1 = wx.Button(self, self.myButtonID, "button_1")
              self.__set_properties()
              self.__do_layout()
              # end wxGlade

“Size”

  Set the widget size in pixels.

“Background”

  Set the background colour of the widget.

“Foreground”

  Set the foreground colour of the widget.

“Font”

  Set the font for widgets text elements.

“Tooltip”

  Set a tooltip for this widget.

“Disabled”

  Disable the widget.

“Focused”

  Sets the widget to receive keyboard input.

“Hidden”

  Hide the widget.

### Layout Properties

The second tab is related to layout properties that control position and resizing within the sizer.

Figure 3.13. Layout Properties

These properties apply to any widget. You can check or uncheck any option related to the placement in the sizer. Many widgets may have a default value of 3 in the “Border” property in the Preferences Dialog (see the section called “Preferences Dialog”). If you let a widget have a default border, the `wxAll` option is also checked.

### Widget Properties

The third tab, named “Widget” is different for each widget, and lets you edit properties for the specific element you have selected.

Figure 3.14. Widget Properties

The set of options may also be quite complex in the case of widgets that have a great deal of methods and properties (such as grids and tree views). In this case, wxGlade greatly simplifies the process of designing forms.

### Events Properties

The fourth tab, named “Events” lists the widgets events. wxGlade generates an event handler stub and binds the event for each added handler name.

Figure 3.15. Events Properties

Figure 3.16. Events Properties with entered event handler name

Example 3.4. Generated Python code of an EVT_TEXT event handler stub at line 12

    class MyFrame(wx.Frame):
        def __init__(self, *args, **kwds):
            # begin wxGlade: MyFrame.__init__
            kwds["style"] = wx.DEFAULT_FRAME_STYLE
            wx.Frame.__init__(self, *args, **kwds)
            self.text_ctrl_1 = wx.TextCtrl(self, -1, "")
            self.__set_properties()
            self.__do_layout()
            self.Bind(wx.EVT_TEXT, self.myEVTTEXT, self.text_ctrl_1)
            # end wxGlade
        def myEVTTEXT(self, event):  # wxGlade: MyFrame.<event_handler>
            print "Event handler `myEVTTEXT' not implemented!"
            event.Skip()

### Code Properties

The fifth and last tab is named “Code” and has two parts.

Figure 3.17. Properties for extra code and extra properties

The upper part provides the ability to add additional code for that widget e.g. for importing a custom class. This “Extra code” will be added to the context of the source file and not to the context of the class.

The under part simplifies setting of additional widget properties. Add the property name to the “Property” field and not the name of the setter function. For instance add “MaxLength” and not “SetMaxLength”. The “Value” field is just a text field. You can enter e.g. a simple number only as well as a complex statement e.g. 0, 0, "1" or a function call. But be carefully! Your entered sequence will be inserted in the source without any changes - one to one.

### Note

“Extra code” and “Extra properties” won't be processed for the widget preview.

Figure 3.18. Set extra property

Example 3.5. Generated Python code for setting property MaxLength to 10 at line 14

    class MyFrame(wx.Frame):
        def __init__(self, *args, **kwds):
            # begin wxGlade: MyFrame.__init__
            kwds["style"] = wx.DEFAULT_FRAME_STYLE
            wx.Frame.__init__(self, *args, **kwds)
            self.text_ctrl_1 = wx.TextCtrl(self, -1, "")
            self.__set_properties()
            self.__do_layout()
            # end wxGlade
        def __set_properties(self):
            # begin wxGlade: MyFrame.__set_properties
            self.SetTitle("frame_1")
            self.text_ctrl_1.SetMaxLength(10)
            # end wxGlade

Prev | Up | Next
Design Window | Home | Preferences Dialog