首页 > 代码库 > wx.Dialog

wx.Dialog

wx.Dialog

A dialog box is a window with a title bar and sometimes a system menu, which can be moved around the screen.

It can contain controls and other windows and is often used to allow the user to make some choice or to answer a question.

Dialogs can be made scrollable, automatically, for computers with low resolution screens: please see Automatic Scrolled Dialogs for further details.

Dialogs usually contain either a single button allowing to close the dialog or two buttons, one accepting the changes and the other one discarding them (such button, if present, is automatically activated if the user presses the “Esc” key). By default, buttons with the standard wx.ID_OK and wx.ID_CANCEL identifiers behave as expected. Starting with wxWidgets 2.7 it is also possible to use a button with a different identifier instead, seeSetAffirmativeId and SetEscapeId.

Also notice that the CreateButtonSizer should be used to create the buttons appropriate for the current platform and positioned correctly (including their order which is platform-dependent).

技术分享 Modal and Modeless

There are two kinds of dialog, modal and modeless. A modal dialog blocks program flow and user input on other windows until it is dismissed, whereas a modeless dialog behaves more like a frame in that program flow continues, and input in other windows is still possible. To show a modal dialog you should use the ShowModal method while to show a dialog modelessly you simply use Show, just as with frames. Note that the modal dialog is one of the very few examples of Window-derived objects which may be created on the stack and not on the heap. In other words, while most windows would be created like this:

# In Python we don‘t have to worry about the stack vs. the heap, however
# that means that dialogs do need to be destroyed. The typical pattern for
# dialog usage looks something like this:
def AskUser(self):
    try:
        dlg = MyAskDialog(self)
        if dlg.ShowModal() == wx.ID_OK:
            # do something here
            print(‘Hello‘)
        else:
            # handle dialog being cancelled or ended by some other button
            ...
    finally:
        # explicitly cause the dialog to destroy itself
        dlg.Destroy()

You can achieve the same result with dialogs by using simpler code:

# Things can be made a little simpler in Python by using the dialog as a
# context manager, using the with statement, like this:
def AskUser(self):
    with MyAskDialog(self) as dlg:
        if dlg.ShowModal() == wx.ID_OK:
            # do something here
            print(‘Hello‘)
        else:
            # handle dialog being cancelled or ended by some other button
            ...

    # The dialog is automatically destroyed on exit from the context manager

技术分享 Window Styles

An application can define a wx.CloseEvent handler for the dialog to respond to system close events. This class supports the following styles:

  • wx.CAPTION: Puts a caption on the dialog box.
  • wx.DEFAULT_DIALOG_STYLE: Equivalent to a combination of wx.CAPTIONwx.CLOSE_BOX and wx.SYSTEM_MENU (the last one is not used under Unix).
  • wx.RESIZE_BORDER: Display a resizable frame around the window.
  • wx.SYSTEM_MENU: Display a system menu.
  • wx.CLOSE_BOX: Displays a close box on the frame.
  • wx.MAXIMIZE_BOX: Displays a maximize box on the dialog.
  • wx.MINIMIZE_BOX: Displays a minimize box on the dialog.
  • THICK_FRAME: Display a thick frame around the window.
  • wx.STAY_ON_TOP: The dialog stays on top of all other windows.
  • NO_3D: This style is obsolete and doesn’t do anything any more, don’t use it in any new code.
  • wx.DIALOG_NO_PARENT: By default, a dialog created with a None parent window will be given the application’s top level window as parent. Use this style to prevent this from happening and create an orphan dialog. This is not recommended for modal dialogs.
  • wx.DIALOG_EX_CONTEXTHELP: Under Windows, puts a query button on the caption. When pressed, Windows will go into a context-sensitive help mode and wxWidgets will send a wxEVT_HELP event if the user clicked on an application window. Note that this is an extended style and must be set by calling SetExtraStyle before Create is called (two-step construction).
  • wx.DIALOG_EX_METAL: On Mac OS X, frames with this style will be shown with a metallic look. This is an extra style.

Under Unix or Linux, MWM (the Motif Window Manager) or other window managers recognizing the MHM hints should be running for any of these styles to have an effect.

技术分享 Events Emitted by this Class

Handlers bound for the following event types will receive one of the wx.CloseEvent parameters.

  • EVT_CLOSE: The dialog is being closed by the user or programmatically (see wx.Window.Close ). The user may generate this event clicking the close button (typically the ‘X’ on the top-right of the title bar) if it’s present (see the CLOSE_BOX style) or by clicking a button with the ID_CANCEL or ID_OK ids.
  • EVT_INIT_DIALOG: Process a wxEVT_INIT_DIALOG event. See wx.InitDialogEvent.

See also

 

Dialog Overviewwx.FrameValidator Overview

 

技术分享 Class Hierarchy

技术分享 Inheritance diagram for class Dialog:

 

技术分享

 

 

技术分享 Control Appearance

 
技术分享

wxMSW

技术分享

wxMAC

技术分享

wxGTK

 

技术分享 Known Subclasses

wx.ColourDialog, wx.DirDialog, wx.FileDialog, wx.FindReplaceDialog, wx.FontDialog, wx.GenericProgressDialog, wx.html.HtmlHelpDialog, wx.MessageDialog, wx.MultiChoiceDialog, wx.propgrid.PGArrayEditorDialog,wx.PrintAbortDialog, wx.adv.PropertySheetDialog, wx.RearrangeDialog, wx.richtext.RichTextStyleOrganiserDialog, wx.SingleChoiceDialog, wx.richtext.SymbolPickerDialog, wx.TextEntryDialog, wx.adv.Wizard

 

技术分享 Methods Summary

__init__ Default constructor.
AddMainButtonId Adds an identifier to be regarded as a main button for the non-scrolling area of a dialog.
CanDoLayoutAdaptation Returns True if this dialog can and should perform layout adaptation using DoLayoutAdaptation , usually if the dialog is too large to fit on the display.
Centre Centres the dialog box on the display.
Create Used for two-step dialog box construction.
CreateButtonSizer Creates a sizer with standard buttons.
CreateSeparatedButtonSizer Creates a sizer with standard buttons using CreateButtonSizer separated from the rest of the dialog contents by a horizontal wx.StaticLine.
CreateSeparatedSizer Returns the sizer containing the given one with a separating wx.StaticLine if necessarily.
CreateStdDialogButtonSizer Creates a wx.StdDialogButtonSizer with standard buttons.
CreateTextSizer Splits text up at newlines and places the lines into wx.StaticText objects in a vertical wx.BoxSizer.
DoLayoutAdaptation Performs layout adaptation, usually if the dialog is too large to fit on the display.
EnableLayoutAdaptation A static function enabling or disabling layout adaptation for all dialogs.
EndModal Ends a modal dialog, passing a value to be returned from the ShowModal invocation.
GetAffirmativeId Gets the identifier of the button which works like standard wx.OK button in this dialog.
GetContentWindow Override this to return a window containing the main content of the dialog.
GetEscapeId Gets the identifier of the button to map presses of ESC button to.
GetLayoutAdaptationDone Returns True if the dialog has been adapted, usually by making it scrollable to work with a small display.
GetLayoutAdaptationLevel Gets a value representing the aggressiveness of search for buttons and sizers to be in the non-scrolling part of a layout-adapted dialog.
GetLayoutAdaptationMode Gets the adaptation mode, overriding the global adaptation flag.
GetLayoutAdapter A static function getting the current layout adapter object.
GetMainButtonIds Returns an array of identifiers to be regarded as the main buttons for the non-scrolling area of a dialog.
GetReturnCode Gets the return code for this window.
Iconize Iconizes or restores the dialog.
IsIconized Returns True if the dialog box is iconized.
IsLayoutAdaptationEnabled A static function returning True if layout adaptation is enabled for all dialogs.
IsMainButtonId Returns True if id is in the array of identifiers to be regarded as the main buttons for the non-scrolling area of a dialog.
IsModal Returns True if the dialog box is modal, False otherwise.
SetAffirmativeId Sets the identifier to be used as wx.OK button.
SetEscapeId Sets the identifier of the button which should work like the standard “Cancel” button in this dialog.
SetIcon Sets the icon for this dialog.
SetIcons Sets the icons for this dialog.
SetLayoutAdaptationDone Marks the dialog as having been adapted, usually by making it scrollable to work with a small display.
SetLayoutAdaptationLevel Sets the aggressiveness of search for buttons and sizers to be in the non-scrolling part of a layout-adapted dialog.
SetLayoutAdaptationMode Sets the adaptation mode, overriding the global adaptation flag.
SetLayoutAdapter A static function for setting the current layout adapter object, returning the old adapter.
SetReturnCode Sets the return code for this window.
Show Hides or shows the dialog.
ShowModal Shows an application-modal dialog.
ShowWindowModal Shows a dialog modal to the parent top level window only.
__enter__  
__exit__  
 

技术分享 Properties Summary

AffirmativeId See GetAffirmativeId and SetAffirmativeId
ContentWindow See GetContentWindow
EscapeId See GetEscapeId and SetEscapeId
LayoutAdaptationDone See GetLayoutAdaptationDone and SetLayoutAdaptationDone
LayoutAdaptationLevel See GetLayoutAdaptationLevel andSetLayoutAdaptationLevel
LayoutAdaptationMode See GetLayoutAdaptationMode and SetLayoutAdaptationMode
MainButtonIds See GetMainButtonIds
ReturnCode See GetReturnCode and SetReturnCode
 

技术分享 Class API



class wx.Dialog(TopLevelWindow)

Possible constructors:

Dialog()

Dialog(parent, id=ID_ANY, title="", pos=DefaultPosition,
       size=DefaultSize, style=DEFAULT_DIALOG_STYLE, name=DialogNameStr)

A dialog box is a window with a title bar and sometimes a system menu, which can be moved around the screen.


Methods



__init__(self*args**kw)

技术分享 Overloaded Implementations:

 


 


__init__ (self)

Default constructor.

 


 


__init__ (self, parent, id=ID_ANY, title=””, pos=DefaultPosition, size=DefaultSize, style=DEFAULT_DIALOG_STYLE, name=DialogNameStr)

Constructor.

Parameters:
  • parent (wx.Window) – Can be None, a frame or another dialog box.
  • id (wx.WindowID) – An identifier for the dialog. A value of -1 is taken to mean a default.
  • title (string) – The title of the dialog.
  • pos (wx.Point) – The dialog position. The value DefaultPosition indicates a default position, chosen by either the windowing system or wxWidgets, depending on platform.
  • size (wx.Size) – The dialog size. The value DefaultSize indicates a default size, chosen by either the windowing system or wxWidgets, depending on platform.
  • style (long) – The window style.
  • name (string) – Used to associate a name with the window, allowing the application user to set Motif resource values for individual dialog boxes.

See also

 

Create

 


 



AddMainButtonId(selfid)

Adds an identifier to be regarded as a main button for the non-scrolling area of a dialog.

Parameters: id (wx.WindowID) –

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



CanDoLayoutAdaptation(self)

Returns True if this dialog can and should perform layout adaptation using DoLayoutAdaptation , usually if the dialog is too large to fit on the display.

Return type: bool

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



Centre(selfdirection=BOTH)

Centres the dialog box on the display.

Parameters: direction (int) – May be wx.HORIZONTALwx.VERTICAL or wx.BOTH.


Create(selfparentid=ID_ANYtitle=""pos=DefaultPositionsize=DefaultSizestyle=DEFAULT_DIALOG_STYLEname=DialogNameStr)

Used for two-step dialog box construction.

Parameters:
  • parent (wx.Window) –
  • id (wx.WindowID) –
  • title (string) –
  • pos (wx.Point) –
  • size (wx.Size) –
  • style (long) –
  • name (string) –
Return type:

bool

See also

 

wx.Dialog



CreateButtonSizer(selfflags)

Creates a sizer with standard buttons.

flags is a bit list of the following flags: wx.OKwx.CANCELwx.YESwx.NOwx.APPLYwx.CLOSEwx.HELPwx.NO_DEFAULT.

The sizer lays out the buttons in a manner appropriate to the platform.

This function uses CreateStdDialogButtonSizer internally for most platforms but doesn’t create the sizer at all for the platforms with hardware buttons (such as smartphones) for which it sets up the hardware buttons appropriately and returns None, so don’t forget to test that the return value is valid before using it.

Parameters: flags (long) –
Return type: wx.Sizer


CreateSeparatedButtonSizer(selfflags)

Creates a sizer with standard buttons using CreateButtonSizer separated from the rest of the dialog contents by a horizontal wx.StaticLine.

This is a combination of CreateButtonSizer and CreateSeparatedSizer .

Parameters: flags (long) –
Return type: wx.Sizer

Note

 

Just like CreateButtonSizer , this function may return None if no buttons were created.



CreateSeparatedSizer(selfsizer)

Returns the sizer containing the given one with a separating wx.StaticLine if necessarily.

This function is useful for creating the sizer containing footer-like contents in dialog boxes. It will add a separating static line only if it conforms to the current platform convention (currently it is not added under Mac where the use of static lines for grouping is discouraged and is added elsewhere).

Parameters: sizer (wx.Sizer) – The sizer to wrap, must be not None.
Return type: wx.Sizer
Returns: The sizer wrapping the input one or possibly the input sizer itself if no wrapping is necessary.

New in version 2.9.2.



CreateStdDialogButtonSizer(selfflags)

Creates a wx.StdDialogButtonSizer with standard buttons.

flags is a bit list of the following flags: wx.OKwx.CANCELwx.YESwx.NOwx.APPLYwx.CLOSEwx.HELPwx.NO_DEFAULT.

The sizer lays out the buttons in a manner appropriate to the platform.

Parameters: flags (long) –
Return type: wx.StdDialogButtonSizer


CreateTextSizer(selfmessage)

Splits text up at newlines and places the lines into wx.StaticText objects in a vertical wx.BoxSizer.

Parameters: message (string) –
Return type: wx.Sizer


DoLayoutAdaptation(self)

Performs layout adaptation, usually if the dialog is too large to fit on the display.

Return type: bool

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



static EnableLayoutAdaptation(enable)

A static function enabling or disabling layout adaptation for all dialogs.

Parameters: enable (bool) –

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



EndModal(selfretCode)

Ends a modal dialog, passing a value to be returned from the ShowModal invocation.

Parameters: retCode (int) – The value that should be returned by ShowModal.

See also

 

ShowModal , GetReturnCode , SetReturnCode



GetAffirmativeId(self)

Gets the identifier of the button which works like standard wx.OK button in this dialog.

Return type: int

See also

 

SetAffirmativeId



GetContentWindow(self)

Override this to return a window containing the main content of the dialog.

This is particularly useful when the dialog implements pages, such as wx.adv.PropertySheetDialog, and allows the layout adaptation code to know that only the pages need to be made scrollable.

Return type: wx.Window


GetEscapeId(self)

Gets the identifier of the button to map presses of ESC button to.

Return type: int

See also

 

SetEscapeId



GetLayoutAdaptationDone(self)

Returns True if the dialog has been adapted, usually by making it scrollable to work with a small display.

Return type: bool

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



GetLayoutAdaptationLevel(self)

Gets a value representing the aggressiveness of search for buttons and sizers to be in the non-scrolling part of a layout-adapted dialog.

Zero switches off adaptation, and 3 allows search for standard buttons anywhere in the dialog.

Return type: int

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



GetLayoutAdaptationMode(self)

Gets the adaptation mode, overriding the global adaptation flag.

Return type: wx.DialogLayoutAdaptationMode

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



static GetLayoutAdapter()

A static function getting the current layout adapter object.

Return type: wx.DialogLayoutAdapter

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



GetMainButtonIds(self)

Returns an array of identifiers to be regarded as the main buttons for the non-scrolling area of a dialog.

Return type: list of integers

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



GetReturnCode(self)

Gets the return code for this window.

Return type: int

Note

 

A return code is normally associated with a modal dialog, where ShowModal returns a code to the application.

See also

 

SetReturnCode , ShowModal , EndModal



Iconize(selficonize=True)

Iconizes or restores the dialog.

Windows only.

Parameters: iconize (bool) – If True, iconizes the dialog box; if False, shows and restores it.

Note

 

Note that in Windows, iconization has no effect since dialog boxes cannot be iconized. However, applications may need to explicitly restore dialog boxes under Motif which have user-iconizable frames, and under Windows calling Iconize(false) will bring the window to the front, as does Show(true).



IsIconized(self)

Returns True if the dialog box is iconized.

Windows only.

Return type: bool

Note

 

Always returns False under Windows since dialogs cannot be iconized.



static IsLayoutAdaptationEnabled()

A static function returning True if layout adaptation is enabled for all dialogs.

Return type: bool

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



IsMainButtonId(selfid)

Returns True if id is in the array of identifiers to be regarded as the main buttons for the non-scrolling area of a dialog.

Parameters: id (wx.WindowID) –
Return type: bool

Availability

 

Only available for MSW.

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



IsModal(self)

Returns True if the dialog box is modal, False otherwise.

Return type: bool


SetAffirmativeId(selfid)

Sets the identifier to be used as wx.OK button.

When the button with this identifier is pressed, the dialog calls wx.Window.Validate and wx.Window.TransferDataFromWindow and, if they both return True, closes the dialog with the affirmative id return code.

Also, when the user presses a hardware wx.OK button on the devices having one or the special wx.OK button in the PocketPC title bar, an event with this id is generated.

By default, the affirmative id is wx.ID_OK.

Parameters: id (int) –

See also

 

GetAffirmativeId , SetEscapeId



SetEscapeId(selfid)

Sets the identifier of the button which should work like the standard “Cancel” button in this dialog.

When the button with this id is clicked, the dialog is closed. Also, when the user presses ESC key in the dialog or closes the dialog using the close button in the title bar, this is mapped to the click of the button with the specified id.

By default, the escape id is the special value wx.ID_ANY meaning that wx.ID_CANCEL button is used if it’s present in the dialog and otherwise the button with GetAffirmativeId is used. Another special value forid is wx.ID_NONE meaning that ESC presses should be ignored. If any other value is given, it is interpreted as the id of the button to map the escape key to.

Parameters: id (int) –

Note

 

This method should be used for custom modal dialog implemented in wxWidgets itself, native dialogs such as wx.MessageDialog or wx.FileDialog, handle ESC presses in their own way which cannot be customized.



SetIcon(selficon)

Sets the icon for this dialog.

Parameters: icon (wx.Icon) – The icon to associate with this dialog.

See also

 

wx.Icon



SetIcons(selficons)

Sets the icons for this dialog.

Parameters: icons (wx.IconBundle) – The icons to associate with this dialog.

See also

 

wx.IconBundle



SetLayoutAdaptationDone(selfdone)

Marks the dialog as having been adapted, usually by making it scrollable to work with a small display.

Parameters: done (bool) –

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



SetLayoutAdaptationLevel(selflevel)

Sets the aggressiveness of search for buttons and sizers to be in the non-scrolling part of a layout-adapted dialog.

Zero switches off adaptation, and 3 allows search for standard buttons anywhere in the dialog.

Parameters: level (int) –

See also

 

Automatic Scrolled Dialogs (for more on layout adaptation)



SetLayoutAdaptationMode(selfmode)

Sets the adaptation mode, overriding the global adaptation flag.

Parameters: mode (DialogLayoutAdaptationMode) –

See also

 

wx.DialogLayoutAdaptationModeAutomatic Scrolled Dialogs (for more on layout adaptation)



static SetLayoutAdapter(adapter)

A static function for setting the current layout adapter object, returning the old adapter.

If you call this, you should delete the old adapter object.

Parameters: adapter (wx.DialogLayoutAdapter) –
Return type: wx.DialogLayoutAdapter

See also

 

wx.DialogLayoutAdapterAutomatic Scrolled Dialogs



SetReturnCode(selfretCode)

Sets the return code for this window.

A return code is normally associated with a modal dialog, where ShowModal returns a code to the application. The function EndModal calls SetReturnCode .

Parameters: retCode (int) – The integer return code, usually a control identifier.

See also

 

GetReturnCode , ShowModal , EndModal



Show(selfshow=1)

Hides or shows the dialog.

The preferred way of dismissing a modal dialog is to use EndModal .

Parameters: show (bool) – If True, the dialog box is shown and brought to the front, otherwise the box is hidden. If False and the dialog is modal, control is returned to the calling program.
Return type: bool


ShowModal(self)

Shows an application-modal dialog.

Program flow does not return until the dialog has been dismissed with EndModal .

Notice that it is possible to call ShowModal for a dialog which had been previously shown with Show , this allows to make an existing modeless dialog modal. However ShowModal can’t be called twice without intervening EndModal calls.

Note that this function creates a temporary event loop which takes precedence over the application’s main event loop (see wx.EventLoopBase) and which is destroyed when the dialog is dismissed. This also results in a call to wx.App.ProcessPendingEvents .

Return type: int
Returns: The value set with SetReturnCode .

See also

 

ShowWindowModal , ShowWindowModalThenDo , EndModal , GetReturnCode , SetReturnCode



ShowWindowModal(self)

Shows a dialog modal to the parent top level window only.

Unlike ShowModal , dialogs shown with this function only prevent the user from interacting with their parent frame only but not with the rest of the application. They also don’t block the program execution but instead return immediately, as Show , and generate a wxEVT_WINDOW_MODAL_DIALOG_CLOSED event ( wx.WindowModalDialogEvent) later when the dialog is closed.

Currently this function is only fully implemented in wxOSX ports, under the other platforms it behaves like ShowModal (but also sends the above mentioned event).

New in version 2.9.0.

See also

 

wx.WindowModalDialogEventShowWindowModalThenDo



__enter__(self)


__exit__(selfexc_typeexc_valexc_tb)

Properties



AffirmativeId

See GetAffirmativeId and SetAffirmativeId



ContentWindow

See GetContentWindow



EscapeId

See GetEscapeId and SetEscapeId



LayoutAdaptationDone

See GetLayoutAdaptationDone and SetLayoutAdaptationDone



LayoutAdaptationLevel

See GetLayoutAdaptationLevel and SetLayoutAdaptationLevel



LayoutAdaptationMode

See GetLayoutAdaptationMode and SetLayoutAdaptationMode



MainButtonIds

See GetMainButtonIds



ReturnCode

See GetReturnCode and SetReturnCode

wx.Dialog