Added the sample code from wxPython In Action to the samples dir
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
12
wxPython/samples/wxPIA_book/Chapter-09/choice_box.py
Normal file
12
wxPython/samples/wxPIA_book/Chapter-09/choice_box.py
Normal file
@@ -0,0 +1,12 @@
|
||||
import wx
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
choices = ["Alpha", "Baker", "Charlie", "Delta"]
|
||||
dialog = wx.SingleChoiceDialog(None, "Pick A Word", "Choices",
|
||||
choices)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
print "You selected: %s\n" % dialog.GetStringSelection()
|
||||
|
||||
dialog.Destroy()
|
||||
|
10
wxPython/samples/wxPIA_book/Chapter-09/color_box.py
Normal file
10
wxPython/samples/wxPIA_book/Chapter-09/color_box.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import wx
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
dialog = wx.ColourDialog(None)
|
||||
dialog.GetColourData().SetChooseFull(True)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
data = dialog.GetColourData()
|
||||
print 'You selected: %s\n' % str(data.GetColour().Get())
|
||||
dialog.Destroy()
|
12
wxPython/samples/wxPIA_book/Chapter-09/dir_box.py
Normal file
12
wxPython/samples/wxPIA_book/Chapter-09/dir_box.py
Normal file
@@ -0,0 +1,12 @@
|
||||
import wx
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
dialog = wx.DirDialog(None, "Choose a directory:",
|
||||
style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
print dialog.GetPath()
|
||||
dialog.Destroy()
|
||||
|
||||
|
||||
|
17
wxPython/samples/wxPIA_book/Chapter-09/file_box.py
Normal file
17
wxPython/samples/wxPIA_book/Chapter-09/file_box.py
Normal file
@@ -0,0 +1,17 @@
|
||||
import wx
|
||||
import os
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
wildcard = "Python source (*.py)|*.py|" \
|
||||
"Compiled Python (*.pyc)|*.pyc|" \
|
||||
"All files (*.*)|*.*"
|
||||
dialog = wx.FileDialog(None, "Choose a file", os.getcwd(),
|
||||
"", wildcard, wx.OPEN)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
print dialog.GetPath()
|
||||
|
||||
dialog.Destroy()
|
||||
|
||||
|
||||
|
16
wxPython/samples/wxPIA_book/Chapter-09/font_box.py
Normal file
16
wxPython/samples/wxPIA_book/Chapter-09/font_box.py
Normal file
@@ -0,0 +1,16 @@
|
||||
import wx
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
dialog = wx.FontDialog(None, wx.FontData())
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
data = dialog.GetFontData()
|
||||
font = data.GetChosenFont()
|
||||
colour = data.GetColour()
|
||||
print 'You selected: "%s", %d points\n' % (
|
||||
font.GetFaceName(), font.GetPointSize())
|
||||
dialog.Destroy()
|
||||
|
||||
|
||||
|
||||
|
11
wxPython/samples/wxPIA_book/Chapter-09/image_box.py
Normal file
11
wxPython/samples/wxPIA_book/Chapter-09/image_box.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import wx
|
||||
import wx.lib.imagebrowser as imagebrowser
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
dialog = imagebrowser.ImageDialog(None)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
print "You Selected File: " + dialog.GetFile()
|
||||
dialog.Destroy()
|
||||
|
||||
|
16
wxPython/samples/wxPIA_book/Chapter-09/message_box.py
Normal file
16
wxPython/samples/wxPIA_book/Chapter-09/message_box.py
Normal file
@@ -0,0 +1,16 @@
|
||||
import wx
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
dlg = wx.MessageDialog(None, "Is this explanation OK?",
|
||||
'A Message Box',
|
||||
wx.YES_NO | wx.ICON_QUESTION)
|
||||
retCode = dlg.ShowModal()
|
||||
if (retCode == wx.ID_YES):
|
||||
print "yes"
|
||||
else:
|
||||
print "no"
|
||||
dlg.Destroy()
|
||||
|
||||
retCode = wx.MessageBox("Is this way easier?", "Via Function",
|
||||
wx.YES_NO | wx.ICON_QUESTION)
|
21
wxPython/samples/wxPIA_book/Chapter-09/modal_dialog.py
Normal file
21
wxPython/samples/wxPIA_book/Chapter-09/modal_dialog.py
Normal file
@@ -0,0 +1,21 @@
|
||||
import wx
|
||||
|
||||
class SubclassDialog(wx.Dialog):
|
||||
def __init__(self):
|
||||
wx.Dialog.__init__(self, None, -1, 'Dialog Subclass',
|
||||
size=(300, 100))
|
||||
okButton = wx.Button(self, wx.ID_OK, "OK", pos=(15, 15))
|
||||
okButton.SetDefault()
|
||||
cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel",
|
||||
pos=(115, 15))
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wx.PySimpleApp()
|
||||
app.MainLoop()
|
||||
dialog = SubclassDialog()
|
||||
result = dialog.ShowModal()
|
||||
if result == wx.ID_OK:
|
||||
print "OK"
|
||||
else:
|
||||
print "Cancel"
|
||||
dialog.Destroy()
|
33
wxPython/samples/wxPIA_book/Chapter-09/progress_box.py
Normal file
33
wxPython/samples/wxPIA_book/Chapter-09/progress_box.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import wx
|
||||
|
||||
class Frame(wx.Frame):
|
||||
def __init__(self, parent):
|
||||
wx.Frame.__init__(self, parent, title="ProgressDialog sample")
|
||||
self.progressMax = 100
|
||||
self.count = 0
|
||||
self.dialog = None
|
||||
self.timer = wx.Timer(self)
|
||||
self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
|
||||
self.timer.Start(1000)
|
||||
|
||||
def OnTimer(self, evt):
|
||||
if not self.dialog:
|
||||
self.dialog = wx.ProgressDialog("A progress box", "Time remaining",
|
||||
self.progressMax,
|
||||
style=wx.PD_CAN_ABORT
|
||||
| wx.PD_ELAPSED_TIME
|
||||
| wx.PD_REMAINING_TIME)
|
||||
|
||||
self.count += 1
|
||||
keepGoing = self.dialog.Update(self.count)
|
||||
if not keepGoing or self.count == self.progressMax:
|
||||
self.dialog.Destroy()
|
||||
self.timer.Stop()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
frame = Frame(None)
|
||||
frame.Show()
|
||||
app.MainLoop()
|
||||
|
8
wxPython/samples/wxPIA_book/Chapter-09/startup_tip.py
Normal file
8
wxPython/samples/wxPIA_book/Chapter-09/startup_tip.py
Normal file
@@ -0,0 +1,8 @@
|
||||
import wx
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
provider = wx.CreateFileTipProvider("tips.txt", 0)
|
||||
wx.ShowTip(None, provider, True)
|
||||
|
||||
|
11
wxPython/samples/wxPIA_book/Chapter-09/text_box.py
Normal file
11
wxPython/samples/wxPIA_book/Chapter-09/text_box.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import wx
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
dialog = wx.TextEntryDialog(None,
|
||||
"What kind of text would you like to enter?",
|
||||
"Text Entry", "Default Value", style=wx.OK|wx.CANCEL)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
print "You entered: %s" % dialog.GetValue()
|
||||
|
||||
dialog.Destroy()
|
2
wxPython/samples/wxPIA_book/Chapter-09/tips.txt
Normal file
2
wxPython/samples/wxPIA_book/Chapter-09/tips.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
You can do startup tips very easily.
|
||||
Feel the force, Luke.
|
93
wxPython/samples/wxPIA_book/Chapter-09/validator1.py
Normal file
93
wxPython/samples/wxPIA_book/Chapter-09/validator1.py
Normal file
@@ -0,0 +1,93 @@
|
||||
import wx
|
||||
|
||||
about_txt = """\
|
||||
The validator used in this example will ensure that the text
|
||||
controls are not empty when you press the Ok button, and
|
||||
will not let you leave if any of the Validations fail."""
|
||||
|
||||
|
||||
class NotEmptyValidator(wx.PyValidator):
|
||||
def __init__(self):
|
||||
wx.PyValidator.__init__(self)
|
||||
|
||||
def Clone(self):
|
||||
"""
|
||||
Note that every validator must implement the Clone() method.
|
||||
"""
|
||||
return NotEmptyValidator()
|
||||
|
||||
def Validate(self, win):
|
||||
textCtrl = self.GetWindow()
|
||||
text = textCtrl.GetValue()
|
||||
|
||||
if len(text) == 0:
|
||||
wx.MessageBox("This field must contain some text!", "Error")
|
||||
textCtrl.SetBackgroundColour("pink")
|
||||
textCtrl.SetFocus()
|
||||
textCtrl.Refresh()
|
||||
return False
|
||||
else:
|
||||
textCtrl.SetBackgroundColour(
|
||||
wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
|
||||
textCtrl.Refresh()
|
||||
return True
|
||||
|
||||
def TransferToWindow(self):
|
||||
return True
|
||||
|
||||
def TransferFromWindow(self):
|
||||
return True
|
||||
|
||||
|
||||
|
||||
class MyDialog(wx.Dialog):
|
||||
def __init__(self):
|
||||
wx.Dialog.__init__(self, None, -1, "Validators: validating")
|
||||
|
||||
# Create the text controls
|
||||
about = wx.StaticText(self, -1, about_txt)
|
||||
name_l = wx.StaticText(self, -1, "Name:")
|
||||
email_l = wx.StaticText(self, -1, "Email:")
|
||||
phone_l = wx.StaticText(self, -1, "Phone:")
|
||||
|
||||
name_t = wx.TextCtrl(self, validator=NotEmptyValidator())
|
||||
email_t = wx.TextCtrl(self, validator=NotEmptyValidator())
|
||||
phone_t = wx.TextCtrl(self, validator=NotEmptyValidator())
|
||||
|
||||
# Use standard button IDs
|
||||
okay = wx.Button(self, wx.ID_OK)
|
||||
okay.SetDefault()
|
||||
cancel = wx.Button(self, wx.ID_CANCEL)
|
||||
|
||||
# Layout with sizers
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(about, 0, wx.ALL, 5)
|
||||
sizer.Add(wx.StaticLine(self), 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
fgs = wx.FlexGridSizer(3, 2, 5, 5)
|
||||
fgs.Add(name_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(name_t, 0, wx.EXPAND)
|
||||
fgs.Add(email_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(email_t, 0, wx.EXPAND)
|
||||
fgs.Add(phone_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(phone_t, 0, wx.EXPAND)
|
||||
fgs.AddGrowableCol(1)
|
||||
sizer.Add(fgs, 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
btns = wx.StdDialogButtonSizer()
|
||||
btns.AddButton(okay)
|
||||
btns.AddButton(cancel)
|
||||
btns.Realize()
|
||||
sizer.Add(btns, 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
self.SetSizer(sizer)
|
||||
sizer.Fit(self)
|
||||
|
||||
|
||||
app = wx.PySimpleApp()
|
||||
|
||||
dlg = MyDialog()
|
||||
dlg.ShowModal()
|
||||
dlg.Destroy()
|
||||
|
||||
app.MainLoop()
|
91
wxPython/samples/wxPIA_book/Chapter-09/validator2.py
Normal file
91
wxPython/samples/wxPIA_book/Chapter-09/validator2.py
Normal file
@@ -0,0 +1,91 @@
|
||||
import wx
|
||||
import pprint
|
||||
|
||||
about_txt = """\
|
||||
The validator used in this example shows how the validator
|
||||
can be used to transfer data to and from each text control
|
||||
automatically when the dialog is shown and dismissed."""
|
||||
|
||||
|
||||
class DataXferValidator(wx.PyValidator):
|
||||
def __init__(self, data, key):
|
||||
wx.PyValidator.__init__(self)
|
||||
self.data = data
|
||||
self.key = key
|
||||
|
||||
def Clone(self):
|
||||
"""
|
||||
Note that every validator must implement the Clone() method.
|
||||
"""
|
||||
return DataXferValidator(self.data, self.key)
|
||||
|
||||
def Validate(self, win):
|
||||
return True
|
||||
|
||||
def TransferToWindow(self):
|
||||
textCtrl = self.GetWindow()
|
||||
textCtrl.SetValue(self.data.get(self.key, ""))
|
||||
return True
|
||||
|
||||
def TransferFromWindow(self):
|
||||
textCtrl = self.GetWindow()
|
||||
self.data[self.key] = textCtrl.GetValue()
|
||||
return True
|
||||
|
||||
|
||||
|
||||
class MyDialog(wx.Dialog):
|
||||
def __init__(self, data):
|
||||
wx.Dialog.__init__(self, None, -1, "Validators: data transfer")
|
||||
|
||||
# Create the text controls
|
||||
about = wx.StaticText(self, -1, about_txt)
|
||||
name_l = wx.StaticText(self, -1, "Name:")
|
||||
email_l = wx.StaticText(self, -1, "Email:")
|
||||
phone_l = wx.StaticText(self, -1, "Phone:")
|
||||
|
||||
name_t = wx.TextCtrl(self, validator=DataXferValidator(data, "name"))
|
||||
email_t = wx.TextCtrl(self, validator=DataXferValidator(data, "email"))
|
||||
phone_t = wx.TextCtrl(self, validator=DataXferValidator(data, "phone"))
|
||||
|
||||
# Use standard button IDs
|
||||
okay = wx.Button(self, wx.ID_OK)
|
||||
okay.SetDefault()
|
||||
cancel = wx.Button(self, wx.ID_CANCEL)
|
||||
|
||||
# Layout with sizers
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(about, 0, wx.ALL, 5)
|
||||
sizer.Add(wx.StaticLine(self), 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
fgs = wx.FlexGridSizer(3, 2, 5, 5)
|
||||
fgs.Add(name_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(name_t, 0, wx.EXPAND)
|
||||
fgs.Add(email_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(email_t, 0, wx.EXPAND)
|
||||
fgs.Add(phone_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(phone_t, 0, wx.EXPAND)
|
||||
fgs.AddGrowableCol(1)
|
||||
sizer.Add(fgs, 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
btns = wx.StdDialogButtonSizer()
|
||||
btns.AddButton(okay)
|
||||
btns.AddButton(cancel)
|
||||
btns.Realize()
|
||||
sizer.Add(btns, 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
self.SetSizer(sizer)
|
||||
sizer.Fit(self)
|
||||
|
||||
|
||||
app = wx.PySimpleApp()
|
||||
|
||||
data = { "name" : "Jordyn Dunn" }
|
||||
dlg = MyDialog(data)
|
||||
dlg.ShowModal()
|
||||
dlg.Destroy()
|
||||
|
||||
wx.MessageBox("You entered these values:\n\n" +
|
||||
pprint.pformat(data))
|
||||
|
||||
app.MainLoop()
|
92
wxPython/samples/wxPIA_book/Chapter-09/validator3.py
Normal file
92
wxPython/samples/wxPIA_book/Chapter-09/validator3.py
Normal file
@@ -0,0 +1,92 @@
|
||||
import wx
|
||||
import string
|
||||
|
||||
about_txt = """\
|
||||
The validator used in this example will validate the input on the fly
|
||||
instead of waiting until the okay button is pressed. The first field
|
||||
will not allow digits to be typed, the second will allow anything
|
||||
and the third will not allow alphabetic characters to be entered.
|
||||
"""
|
||||
|
||||
|
||||
class CharValidator(wx.PyValidator):
|
||||
def __init__(self, flag):
|
||||
wx.PyValidator.__init__(self)
|
||||
self.flag = flag
|
||||
self.Bind(wx.EVT_CHAR, self.OnChar)
|
||||
|
||||
def Clone(self):
|
||||
"""
|
||||
Note that every validator must implement the Clone() method.
|
||||
"""
|
||||
return CharValidator(self.flag)
|
||||
|
||||
def Validate(self, win):
|
||||
return True
|
||||
|
||||
def TransferToWindow(self):
|
||||
return True
|
||||
|
||||
def TransferFromWindow(self):
|
||||
return True
|
||||
|
||||
def OnChar(self, evt):
|
||||
key = chr(evt.GetKeyCode())
|
||||
if self.flag == "no-alpha" and key in string.letters:
|
||||
return
|
||||
if self.flag == "no-digit" and key in string.digits:
|
||||
return
|
||||
evt.Skip()
|
||||
|
||||
|
||||
class MyDialog(wx.Dialog):
|
||||
def __init__(self):
|
||||
wx.Dialog.__init__(self, None, -1, "Validators: behavior modification")
|
||||
|
||||
# Create the text controls
|
||||
about = wx.StaticText(self, -1, about_txt)
|
||||
name_l = wx.StaticText(self, -1, "Name:")
|
||||
email_l = wx.StaticText(self, -1, "Email:")
|
||||
phone_l = wx.StaticText(self, -1, "Phone:")
|
||||
|
||||
name_t = wx.TextCtrl(self, validator=CharValidator("no-digit"))
|
||||
email_t = wx.TextCtrl(self, validator=CharValidator("any"))
|
||||
phone_t = wx.TextCtrl(self, validator=CharValidator("no-alpha"))
|
||||
|
||||
# Use standard button IDs
|
||||
okay = wx.Button(self, wx.ID_OK)
|
||||
okay.SetDefault()
|
||||
cancel = wx.Button(self, wx.ID_CANCEL)
|
||||
|
||||
# Layout with sizers
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(about, 0, wx.ALL, 5)
|
||||
sizer.Add(wx.StaticLine(self), 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
fgs = wx.FlexGridSizer(3, 2, 5, 5)
|
||||
fgs.Add(name_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(name_t, 0, wx.EXPAND)
|
||||
fgs.Add(email_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(email_t, 0, wx.EXPAND)
|
||||
fgs.Add(phone_l, 0, wx.ALIGN_RIGHT)
|
||||
fgs.Add(phone_t, 0, wx.EXPAND)
|
||||
fgs.AddGrowableCol(1)
|
||||
sizer.Add(fgs, 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
btns = wx.StdDialogButtonSizer()
|
||||
btns.AddButton(okay)
|
||||
btns.AddButton(cancel)
|
||||
btns.Realize()
|
||||
sizer.Add(btns, 0, wx.EXPAND|wx.ALL, 5)
|
||||
|
||||
self.SetSizer(sizer)
|
||||
sizer.Fit(self)
|
||||
|
||||
|
||||
app = wx.PySimpleApp()
|
||||
|
||||
dlg = MyDialog()
|
||||
dlg.ShowModal()
|
||||
dlg.Destroy()
|
||||
|
||||
app.MainLoop()
|
39
wxPython/samples/wxPIA_book/Chapter-09/wizard.py
Normal file
39
wxPython/samples/wxPIA_book/Chapter-09/wizard.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import wx
|
||||
import wx.wizard
|
||||
|
||||
class TitledPage(wx.wizard.WizardPageSimple):
|
||||
def __init__(self, parent, title):
|
||||
wx.wizard.WizardPageSimple.__init__(self, parent)
|
||||
self.sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
self.SetSizer(self.sizer)
|
||||
titleText = wx.StaticText(self, -1, title)
|
||||
titleText.SetFont(
|
||||
wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD))
|
||||
self.sizer.Add(titleText, 0,
|
||||
wx.ALIGN_CENTRE | wx.ALL, 5)
|
||||
self.sizer.Add(wx.StaticLine(self, -1), 0,
|
||||
wx.EXPAND | wx.ALL, 5)
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.PySimpleApp()
|
||||
wizard = wx.wizard.Wizard(None, -1, "Simple Wizard")
|
||||
page1 = TitledPage(wizard, "Page 1")
|
||||
page2 = TitledPage(wizard, "Page 2")
|
||||
page3 = TitledPage(wizard, "Page 3")
|
||||
page4 = TitledPage(wizard, "Page 4")
|
||||
page1.sizer.Add(wx.StaticText(page1, -1,
|
||||
"Testing the wizard"))
|
||||
page4.sizer.Add(wx.StaticText(page4, -1,
|
||||
"This is the last page."))
|
||||
wx.wizard.WizardPageSimple_Chain(page1, page2)
|
||||
wx.wizard.WizardPageSimple_Chain(page2, page3)
|
||||
wx.wizard.WizardPageSimple_Chain(page3, page4)
|
||||
wizard.FitToPage(page1)
|
||||
|
||||
if wizard.RunWizard(page1):
|
||||
print "Success"
|
||||
|
||||
wizard.Destroy()
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user