Dies ist eine Kurzübersicht zu wesentlichen Detailinformationen der WxProgrammierung. Eine mehr ausführlich Anleitung bietet das
WxPerl Tutorial. Es gibt auch eine
englische Version in der WxWiki
WidgetKlassen
Alle Klassen und Funktionen werden mit einem Wx:: vor den hier erwähnten Namen geschrieben. Die Klassen sind oft core, aber manchmal auch in seperaten Modulen ausgelagert, die mit use/require zu laden sind, aber "use Wx qw[:allclasses];" läd alle installierten Wx::* Module auf einmal. Und Camelcase (Namensteile werden zusammen geschrieben und beginnen mit Großbuchstaben) ist Konvention für Die Namen der Klassen, Methoden und Funktionen.
Fenster
Frame Haupfenster eines Programms, kann Leisten mit Menü, Status und Werkzeugen verwalten
MiniFrame Fenster mit minimalen Rahmen und keinen weitere Fähigkeiten
MDIParentFrame Oberfenster für MDI
MDIChildFrame Kinderfenster, daß nur innerhalb des MDIParentFrame dargestellt wird
Dialog Fenster mit Panel, daß beim Schließen Programmprozess nicht beendet
Wizard Dialoge mit mehreren Panel und Navigation dafür
TopLevelWindow Basisklasse aller Fenster (Icon, Titel, Größe, Anzeigemodus, Form)
PopupWindow randlose Flächen die aktuelles Fenster überlagern (für zb. Kontextmenüs)
Window Basisklasse aller sichtbaren Objekte (Widget), nur in früheren Versionen als Fenster benutzbar
Dialoge
keine Klasse sondern eine Funktionen die Dialoge sofort aufrufen und nur einen Wert zurückgeben:
MessageBox( $msg, $caption, $flags, $parent, $x, $y);
AboutBox
ShowTip
DirSelector
FileSelector
GetColourFromUser
GetFontFromUser
GetMultipleChoices
GetNumberFromUser
GetPasswordFromUser
GetTextFromUser
GetSingleChoice
Klassen die modale Dialoge erzeugen, Dialoge die nach Erzeugung gezeigt werden können und nach Benutzung ausgewertet werden können:
MessageDialog
SingleChoiceDialog
MultiChoiceDialog
TextEntryDialog
PasswordEntryDialog
FileDialog
DirDialog
FontDialog
PrintDialog
ColourDialog
Flächen
Panel Grundfläche um darauf andere Widgets zu positionieren
ScrolledWindow Panel mit Scrollbalken das (virtuell) größer als sichtbarer Ausschnitt ist
VScrolledWindow sich anpassendes ScrolledWindow
CollapsiblePane Label mit Fläche die sich zusammenklappen lässt wie Knoten eines Baums (TreeCtrl)
SplitterWindow zweigeteilte Fläche mit beweglichem Balken (horizontal oder vertikal)
Dekoration
StaticLine horizontale oder vertikale Linie/Rechteck mit variabler Breite, meist als Trennlinie
StaticBox Rahmen mit Überschrift um eine Gruppe von Widget (graphischen Elementen)
StaticText ein Text-Etikett
Gauge Balken der Prozentangabe/Fortschrittsangabe anzeigen kann
StaticBitmap ein Bild
AnimationCtrl Animation / Film der ohne Nutzerkontrolle ständig abläuft
Auswahl
Button einfacher Knopf mit Beschriftung
BitmapButton Knopf mit Bild/Icon auf der Oberfläche
SpinButton 2 Knöpfe mit Pfeilen für links/recht oder oben/unten Entscheidungen
CheckBox beschriftetes Kästchen an das ein Häkchen gesetzt werdne kann
RadioButton beschriftetes Kästchen das nur eine Auswahl je Gruppe zuläßt
ListBox Liste von Labels die mehrfache Auswahl erlaubt
Slider Regler mit Textbox die aktuell gewählten Wert anzeigt
CalendarCtrl wähl ein Datum
FileCtrl wähl eine Datei, Inhalt des Wx::FileDialog
FilePickerCtrl Knopf der Wx::FileDialog aufruft
DirPickerCtrl Knopf der Wx::DirDialog aufruft
FontPickerCtrl Knopf der Wx::FontDialog aufruft
ColourPickerCtrl Knopf der Wx::ColourDialog aufruft
Panelauswahl
Diese etwas komplexeren Widget, die von Wx::BookCtrl abgeleitet sind, lassen immer zwischen Panel auswählen, von denen eines samt Inhalt immer sichtbar ist.
Notebook benutzt eine Reiterleiste
Listbook benutzt eine Liste aka Wx::ListCtrl
Choicebook benutzt Wx::Choice
Treebook benutzt eine Baumstruktur aka Wx::TreeCtrl
Toolbook benutzt eine Werkzeugleiste aka Wx::ToolBar
Eingabe
TextCtrl einfaches Textfeld über eine oder mehr Zeilen
RichTextCtrl Textfeld mit mehr Formatierungsmöglichkeiten
StyledTextCtrl aka Wx::STC aka Scintilla, Textfeld mit syntaxfärbung und sehr viel mehr
SpinCtrl Textfeld mit SpinButton (2 Pfeilknöpfe)
Grid Tabelle a la Excel
HtmlWindow Renderer für einfaches HTML in das auch Widgets eingebettet werden können
MediaCtrl Videospieler, den der Nutzer steuern kann (im Gegensatz zu AnimationCtrl)
Sizer
Sind keine Widget, also nicht sichtbar, aber organisieren die Anordnung der Widget, manipulieren also die Parameter für Position und Größe der Widgets.
BoxSizer eindimensionaler, linearer Sizer
StaticBoxSizer BoxSizer mit Rahmen und Label
StdDialogButtonSizer für eine Zeile mit Standart Button im Standartlayout des OS
GridSizer einfache Tabelle mit gleichgroßen Zellen
FlexGridSizer Tabelle mit Zeilen und Spalten variabler Größe
GridBagSizer FlexGridSizer wo Widgets Zellengrenzen überschreiten können (wie col- und rowspan in html)
Methoden
Namen
Parameter
... haben eine feste Reihenfolge (solnag man nicht wxPerl::Constructors benutzt), die im groben folgendem Schema folgt.
$obj->Methodename(Elterwidget, WidgetID, Input, Pos, Größe, Style, Zusätze ...., Name);
Konstanten
Alle Konstanten werden aus dem Modul "Wx::Wx_Exp.pm" geladen (zum nachschaun), aber aus dem Namensraum "Wx" importiert (use Wx qw( konstante, :gruppe );), Faule benutzen "use Wx qw(:everything);". Wenn sie importiert werden, können sie wie folgt geschrieben werden, ansonst: "&Wx::wxKONSTANTE".
Abstände
Diese Konstanten bestimmen in welche Richtungen dieses Widget zusätzlichen Rand zu seiner Umgebung haben soll.
wxALL = wxTOP | wxBOTTOM | wxLEFT | wxRIGHT
aka wxNORTH,wxSOUTH, wxWEST, wxEAST
Ausrichtung
wxALIGN_LEFT wxALIGN_RIGHT wxALIGN_TOP wxALIGN_BOTTOM
wxALIGN_CENTER_VERTICAL aka wxALIGN_CENTRE_VERTICAL
wxALIGN_CENTER_HORIZONTAL aka wxALIGN_CENTRE_HORIZONTAL
wxALIGN_CENTER aka wxALIGN_CENTRE = ...ENTER_HORIZONTAL | ...ENTER_VERTICAL
Default : wxALIGN_LEFT | wxALIGN_TOP
Größe
wxEXPAND aka wxGROW nimmt allen verfügbaren Platz ein.
wxSHAPED wie wxEXPAND, unter Wahrung der zugewiesenen Höhe/Breite-Verhältnisses.
wxFIXED_MINSIZE Größe wird unveränderlich nach anfänglicher Berechnung
Haupfenster
wxCAPTION | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxRESIZE_BORDER
Allgemein Widgets
wxID_ANY aka -1 eine noch freie ID
wxID_NONE
vordefinierte, reservierte ID = wxID_LOWEST .. wxID_HIGHEST
MsgBoxen
wxYES_NO wxYES wxNO wxCANCEL wxOK
wxICON_EXCLAMATION wxICON_HAND wxICON_ERROR wxICON_QUESTION wxICON_INFORMATION
Farben
wxBLACK wxWHITE wxRED wxBLUE wxGREEN wxCYAN wxLIGHT_GREY
Tasten
WXK_SHIFT WXK_ALT WXK_CONTROL
WXK_BACK WXK_TAB WXK_RETURN WXK_ESCAPE WXK_SPACE WXK_SCROLL WXK_NUMLOCK
'#' => 47 tilde => 92,
WXK_DELETE WXK_INSERT WXK_PAGEUP, WXK_PAGEDOWN, WXK_HOME, WXK_END,
WXK_LEFT WXK_UP WXK_RIGHT WXK_DOWN, WXK_F1 .. WXK_F12
WXK_NUMPAD_SPACE WXK_NUMPAD_TAB WXK_NUMPAD_ENTER WXK_NUMPAD_F1
Menüitem
wxID_ABOUT wxID_ADD wxID_APPLY wxID_BOLD wxID_CANCEL wxID_CLEAR wxID_CLOSE
wxID_COPY wxID_CUT wxID_DELETE wxID_EDIT wxID_FIND wxID_FILE wxID_REPLACE
wxID_BACKWARD wxID_DOWN wxID_FORWARD wxID_UP wxID_HELP wxID_HOME wxID_INDENT
wxID_INDEX wxID_ITALIC wxID_JUSTIFY_CENTER wxID_JUSTIFY_FILL
wxID_JUSTIFY_LEFT wxID_JUSTIFY_RIGHT
wxID_NEW wxID_NO wxID_OK wxID_OPEN wxID_PASTE wxID_PREFERENCES wxID_PRINT
wxID_PREVIEW wxID_PROPERTIES wxID_EXIT wxID_REDO wxID_REFRESH wxID_REMOVE
wxID_REVERT_TO_SAVED wxID_SAVE wxID_SAVEAS wxID_SELECTALL wxID_STOP
wxID_UNDELETE wxID_UNDERLINE wxID_UNDO wxID_UNINDENT
wxID_YES wxID_ZOOM_100 wxID_ZOOM_FIT wxID_ZOOM_IN wxID_ZOOM_OUT
Sprachen
WxLANGUAGE_DEFAULT wxLANGUAGE_UNKNOWN wxLANGUAGE_USER_DEFINED
wxLANGUAGE_ABKHAZIAN wxLANGUAGE_AFAR wxLANGUAGE_AFRIKAANS wxLANGUAGE_ALBANIAN wxLANGUAGE_AMHARIC wxLANGUAGE_ARABIC wxLANGUAGE_ARABIC_ALGERIA
wxLANGUAGE_ARABIC_BAHRAIN wxLANGUAGE_ARABIC_EGYPT wxLANGUAGE_ARABIC_IRAQ wxLANGUAGE_ARABIC_JORDAN wxLANGUAGE_ARABIC_KUWAIT wxLANGUAGE_ARABIC_LEBANON
wxLANGUAGE_ARABIC_LIBYA wxLANGUAGE_ARABIC_MOROCCO wxLANGUAGE_ARABIC_OMAN wxLANGUAGE_ARABIC_QATAR wxLANGUAGE_ARABIC_SAUDI_ARABIA wxLANGUAGE_ARABIC_SUDAN
wxLANGUAGE_ARABIC_SYRIA wxLANGUAGE_ARABIC_TUNISIA wxLANGUAGE_ARABIC_UAE wxLANGUAGE_ARABIC_YEMEN wxLANGUAGE_ARMENIAN wxLANGUAGE_ASSAMESE wxLANGUAGE_AYMARA
wxLANGUAGE_AZERI wxLANGUAGE_AZERI_CYRILLIC wxLANGUAGE_AZERI_LATIN
wxLANGUAGE_BASHKIR wxLANGUAGE_BASQUE wxLANGUAGE_BELARUSIAN wxLANGUAGE_BENGALI wxLANGUAGE_BHUTANI wxLANGUAGE_BIHARI wxLANGUAGE_BISLAMA
wxLANGUAGE_BRETON wxLANGUAGE_BULGARIAN wxLANGUAGE_BURMESE wxLANGUAGE_CAMBODIAN wxLANGUAGE_CATALAN
wxLANGUAGE_CHINESE wxLANGUAGE_CHINESE_SIMPLIFIED wxLANGUAGE_CHINESE_TRADITIONAL wxLANGUAGE_CHINESE_HONGKONG wxLANGUAGE_CHINESE_MACAU wxLANGUAGE_CHINESE_SINGAPORE wxLANGUAGE_CHINESE_TAIWAN
wxLANGUAGE_CORSICAN wxLANGUAGE_CROATIAN wxLANGUAGE_CZECH wxLANGUAGE_DANISH wxLANGUAGE_DUTCH wxLANGUAGE_DUTCH_BELGIAN
wxLANGUAGE_ENGLISH wxLANGUAGE_ENGLISH_UK wxLANGUAGE_ENGLISH_US wxLANGUAGE_ENGLISH_AUSTRALIA wxLANGUAGE_ENGLISH_BELIZE wxLANGUAGE_ENGLISH_BOTSWANA wxLANGUAGE_ENGLISH_CANADA
wxLANGUAGE_ENGLISH_CARIBBEAN wxLANGUAGE_ENGLISH_DENMARK wxLANGUAGE_ENGLISH_EIRE wxLANGUAGE_ENGLISH_JAMAICA wxLANGUAGE_ENGLISH_NEW_ZEALAND
wxLANGUAGE_ENGLISH_PHILIPPINES wxLANGUAGE_ENGLISH_SOUTH_AFRICA wxLANGUAGE_ENGLISH_TRINIDAD wxLANGUAGE_ENGLISH_ZIMBABWE wxLANGUAGE_ESPERANTO wxLANGUAGE_ESTONIAN
wxLANGUAGE_FAEROESE wxLANGUAGE_FARSI wxLANGUAGE_FIJI wxLANGUAGE_FINNISH wxLANGUAGE_FRENCH wxLANGUAGE_FRENCH_BELGIAN wxLANGUAGE_FRENCH_CANADIAN wxLANGUAGE_FRENCH_LUXEMBOURG
wxLANGUAGE_FRENCH_MONACO wxLANGUAGE_FRENCH_SWISS wxLANGUAGE_FRISIAN
wxLANGUAGE_GALICIAN wxLANGUAGE_GEORGIAN wxLANGUAGE_GERMAN wxLANGUAGE_GERMAN_AUSTRIAN wxLANGUAGE_GERMAN_BELGIUM wxLANGUAGE_GERMAN_LIECHTENSTEIN wxLANGUAGE_GERMAN_LUXEMBOURG wxLANGUAGE_GERMAN_SWISS
wxLANGUAGE_GREEK wxLANGUAGE_GREENLANDIC wxLANGUAGE_GUARANI wxLANGUAGE_GUJARATI
wxLANGUAGE_HAUSA wxLANGUAGE_HEBREW wxLANGUAGE_HINDI wxLANGUAGE_HUNGARIAN
wxLANGUAGE_ICELANDIC wxLANGUAGE_INDONESIAN wxLANGUAGE_INTERLINGUA wxLANGUAGE_INTERLINGUE wxLANGUAGE_INUKTITUT wxLANGUAGE_INUPIAK wxLANGUAGE_IRISH wxLANGUAGE_ITALIAN wxLANGUAGE_ITALIAN_SWISS
wxLANGUAGE_JAPANESE wxLANGUAGE_JAVANESE
wxLANGUAGE_KANNADA wxLANGUAGE_KASHMIRI wxLANGUAGE_KASHMIRI_INDIA wxLANGUAGE_KAZAKH wxLANGUAGE_KERNEWEK wxLANGUAGE_KINYARWANDA wxLANGUAGE_KIRGHIZ wxLANGUAGE_KIRUNDI
wxLANGUAGE_KONKANI wxLANGUAGE_KOREAN wxLANGUAGE_KURDISH
wxLANGUAGE_LAOTHIAN wxLANGUAGE_LATIN wxLANGUAGE_LATVIAN wxLANGUAGE_LINGALA wxLANGUAGE_LITHUANIAN
wxLANGUAGE_MACEDONIAN wxLANGUAGE_MALAGASY wxLANGUAGE_MALAY wxLANGUAGE_MALAYALAM wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM wxLANGUAGE_MALAY_MALAYSIA
wxLANGUAGE_MALTESE wxLANGUAGE_MANIPURI wxLANGUAGE_MAORI wxLANGUAGE_MARATHI wxLANGUAGE_MOLDAVIAN wxLANGUAGE_MONGOLIAN
wxLANGUAGE_NAURU wxLANGUAGE_NEPALI wxLANGUAGE_NEPALI_INDIA wxLANGUAGE_NORWEGIAN_BOKMAL wxLANGUAGE_NORWEGIAN_NYNORSK
wxLANGUAGE_OCCITAN wxLANGUAGE_ORIYA wxLANGUAGE_OROMO
wxLANGUAGE_PASHTO wxLANGUAGE_POLISH wxLANGUAGE_PORTUGUESE wxLANGUAGE_PORTUGUESE_BRAZILIAN wxLANGUAGE_PUNJABI wxLANGUAGE_QUECHUA
wxLANGUAGE_RHAETO_ROMANCE wxLANGUAGE_ROMANIAN wxLANGUAGE_RUSSIAN wxLANGUAGE_RUSSIAN_UKRAINE
wxLANGUAGE_SAMOAN wxLANGUAGE_SANGHO wxLANGUAGE_SANSKRIT wxLANGUAGE_SCOTS_GAELIC
wxLANGUAGE_SERBIAN wxLANGUAGE_SERBIAN_CYRILLIC wxLANGUAGE_SERBIAN_LATIN wxLANGUAGE_SERBO_CROATIAN wxLANGUAGE_SESOTHO wxLANGUAGE_SETSWANA
wxLANGUAGE_SHONA wxLANGUAGE_SINDHI wxLANGUAGE_SINHALESE wxLANGUAGE_SISWATI wxLANGUAGE_SLOVAK wxLANGUAGE_SLOVENIAN wxLANGUAGE_SOMALI
wxLANGUAGE_SPANISH wxLANGUAGE_SPANISH_ARGENTINA wxLANGUAGE_SPANISH_BOLIVIA wxLANGUAGE_SPANISH_CHILE wxLANGUAGE_SPANISH_COLOMBIA wxLANGUAGE_SPANISH_COSTA_RICA
wxLANGUAGE_SPANISH_DOMINICAN_REPUBLIC wxLANGUAGE_SPANISH_ECUADOR wxLANGUAGE_SPANISH_EL_SALVADOR wxLANGUAGE_SPANISH_GUATEMALA wxLANGUAGE_SPANISH_HONDURAS wxLANGUAGE_SPANISH_MEXICAN
wxLANGUAGE_SPANISH_MODERN wxLANGUAGE_SPANISH_NICARAGUA wxLANGUAGE_SPANISH_PANAMA wxLANGUAGE_SPANISH_PARAGUAY wxLANGUAGE_SPANISH_PERU wxLANGUAGE_SPANISH_PUERTO_RICO
wxLANGUAGE_SPANISH_URUGUAY wxLANGUAGE_SPANISH_US wxLANGUAGE_SPANISH_VENEZUELA wxLANGUAGE_SUNDANESE wxLANGUAGE_SWAHILI wxLANGUAGE_SWEDISH wxLANGUAGE_SWEDISH_FINLAND
wxLANGUAGE_TAGALOG wxLANGUAGE_TAJIK wxLANGUAGE_TAMIL wxLANGUAGE_TATAR wxLANGUAGE_TELUGU wxLANGUAGE_THAI wxLANGUAGE_TIBETAN wxLANGUAGE_TIGRINYA
wxLANGUAGE_TONGA wxLANGUAGE_TSONGA wxLANGUAGE_TURKISH wxLANGUAGE_TURKMEN wxLANGUAGE_TWI
wxLANGUAGE_UIGHUR wxLANGUAGE_UKRAINIAN wxLANGUAGE_URDU wxLANGUAGE_URDU_INDIA wxLANGUAGE_URDU_PAKISTAN wxLANGUAGE_UZBEK wxLANGUAGE_UZBEK_CYRILLIC wxLANGUAGE_UZBEK_LATIN
wxLANGUAGE_VIETNAMESE wxLANGUAGE_VOLAPUK wxLANGUAGE_WELSH wxLANGUAGE_WOLOF
wxLANGUAGE_XHOSA wxLANGUAGE_YIDDISH wxLANGUAGE_YORUBA wxLANGUAGE_ZHUANG wxLANGUAGE_ZULU
Ereignisse
werden Wx::Event::eventname benutzt oder als Konstanten von Wx::Event importiert, kommen aber ebenfalls aus "Wx::Wx_Exp.pm". Bequeme Menschen benutzen "use Wx::Event qw(:everything);". Manche Events brauchen noch als zusätzlichen Parameter die ID des Events an zweiter Stelle.
Alle Widgets
EVT_SIZE( $widget, \&$callback ); # wenn sich Größe des Widet ändert
EVT_SIZING # das Selbe ?
EVT_SET_FOCUS # widget bekommt Fokus
EVT_KILL_FOCUS # widget verliertFokus
EVT_IDLE # wenn $app und kinder nichts tun
EVT_DESTROY # zu spät für ein Veto
Fenster
haben alle Ereignisse von Widgets und noch einige mehr:
EVT_MOVE # Fenster wird bewegt - 100/sec
EVT_MOVE_START #
EVT_MOVE_END #
EVT_CLOSE # $event->Veto verhindert Schließen
Tastatur
EVT_KEY_DOWN( $widget, \&$callback );
EVT_KEY_UP
EVT_CHAR
Maus
EVT_LEFT_UP( $widget, \&$callback );
EVT_LEFT_DOWN EVT_MIDDLE_UP EVT_MIDDLE_DOWN EVT_RIGHT_UP EVT_RIGHT_DOWN
EVT_MOUSEWHEEL # wenn mausrad sich dreht
EVT_MOTION # wenn Cursor sich überm Widget bewegt
EVT_ENTER_WINDOW # Cursor erreicht Widget
EVT_LEAVE_WINDOW # Cursor verläßt Widget
EVT_MOUSE_EVENTS # fange alle Mausereignisse ab
Stoppuhr
my $timer = Wx::Timer->new( $Widget, $TimerID );
$timer->Start( $millisekunden, $einmal_auslösen );
$timer->Stop;
EVT_TIMER( $Widget, $TimerID , \&$callback );
Menü
Der erste Event wird bei Auswahl des Menüitem ausgelöst, der zweite bereits beim anwählen.
EVT_MENU( $widget, $itemID , \&$callback );
EVT_MENU_HIGHLIGHT
Contribs
mächtige Erweiterungen des Kerns
AUI
Advanced userinterface für peppigeres aussehen, einfacheres DND und marhalling der GUI
XRC
XML Resource Compiler, benutzt Wx::XML zum lesen und erstell. zur laufzeit komplette GUI oder auch beliebige Teile.
Wx::InitAllImageHandlers();
my $xr = Wx::XmlResource->new();
$xr->InitAllHandlers();
$xr->Load('file.xrc'); # nur lesen
my $frame = $xr->LoadFrame(undef, 'ConFrame');
my $knopfID = Wx::XmlResource::GetXRCID('knopf1')
my $knopf = $frame->FindWindow($buttonID);
LoadBitmap('ElementID');
LoadDialog($parent, 'ElementID');
LoadFrame($parent, 'ElementID');
LoadIcon('ElementID');
LoadMenu('ElementID');
LoadMenuBar($parent, 'ElementID');
LoadPanel($parent, 'ElementID');
LoadToolBar($parent, 'ElementID');
Dieses Turorial steht unter der
BY-SA-3.0 Unported Lizenz.
--
HerbertBreunung - 12 Oct 2009