def __init__(self, parent, controller, tagname, title):
"""
Constructor
@param parent: Parent wx.Window of dialog for modal
@param controller: Reference to project controller
@param tagname: Tagname of project POU edited
@param title: Title of dialog frame
"""
wx.Dialog.__init__(self, parent, title=title)
# Save reference to
self.Controller = controller
self.TagName = tagname
# Label for preview
self.PreviewLabel = wx.StaticText(self, label=_('Preview:'))
# Create Preview panel
self.Preview = wx.Panel(self, style=wx.SIMPLE_BORDER)
self.Preview.SetBackgroundColour(wx.WHITE)
# Add function to preview panel so that it answers to graphic elements
# like Viewer
setattr(self.Preview, "GetDrawingMode", lambda: FREEDRAWING_MODE)
setattr(self.Preview, "GetScaling", lambda: None)
setattr(self.Preview, "GetBlockType", controller.GetBlockType)
setattr(self.Preview, "IsOfType", controller.IsOfType)
# Bind paint event on Preview panel
self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
# Add default dialog buttons sizer
self.ButtonSizer = self.CreateButtonSizer(wx.OK | wx.CANCEL | wx.CENTRE)
self.Bind(wx.EVT_BUTTON, self.OnOK,
self.ButtonSizer.GetAffirmativeButton())
self.Element = None # Graphic element to display in preview
self.MinElementSize = None # Graphic element minimal size
# Variable containing the graphic element name when dialog is opened
self.DefaultElementName = None
self.Fit()
# List of variables defined in POU {var_name: (var_class, var_type),...}
self.VariableList = {}
python类EVT_PAINT的实例源码
def __init__(self, parent, title):
"""Create the pydicom image example's main frame window."""
wx.Frame.__init__(self, parent, id=-1, title="", pos=wx.DefaultPosition,
size=wx.Size(w=1024, h=768),
style=wx.DEFAULT_FRAME_STYLE | wx.SUNKEN_BORDER | wx.CLIP_CHILDREN)
# --------------------------------------------------------
# Set up the menubar.
# --------------------------------------------------------
self.mainmenu = wx.MenuBar()
# Make the 'File' menu.
menu = wx.Menu()
item = menu.Append(wx.ID_ANY, '&Open', 'Open file for editing')
self.Bind(wx.EVT_MENU, self.OnFileOpen, item)
item = menu.Append(wx.ID_ANY, 'E&xit', 'Exit Program')
self.Bind(wx.EVT_MENU, self.OnFileExit, item)
self.mainmenu.Append(menu, '&File')
# Attach the menu bar to the window.
self.SetMenuBar(self.mainmenu)
# --------------------------------------------------------
# Set up the main splitter window.
# --------------------------------------------------------
self.mainSplitter = wx.SplitterWindow(self, style=wx.NO_3D | wx.SP_3D)
self.mainSplitter.SetMinimumPaneSize(1)
# -------------------------------------------------------------
# Create the folderTreeView on the left.
# -------------------------------------------------------------
self.dsTreeView = wx.TreeCtrl(self.mainSplitter, style=wx.TR_LINES_AT_ROOT | wx.TR_HAS_BUTTONS)
# --------------------------------------------------------
# Create the ImageView on the right pane.
# --------------------------------------------------------
self.imView = wx.Panel(self.mainSplitter, style=wx.VSCROLL | wx.HSCROLL | wx.CLIP_CHILDREN)
self.imView.Bind(wx.EVT_PAINT, self.OnPaint)
self.imView.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
self.imView.Bind(wx.EVT_SIZE, self.OnSize)
# --------------------------------------------------------
# Install the splitter panes.
# --------------------------------------------------------
self.mainSplitter.SplitVertically(self.dsTreeView, self.imView)
self.mainSplitter.SetSashPosition(300, True)
# --------------------------------------------------------
# Initialize some values
# --------------------------------------------------------
self.dcmdsRoot = False
self.foldersRoot = False
self.loadCentered = True
self.bitmap = None
self.Show(True)
def __init__(self, data_index_uid, display, is_range, min_idx, max_idx, *args, **kwargs):
super(DimensionPanel, self).__init__(*args, **kwargs)
self.SetSize(300, 50)
#
self.data_index_uid = data_index_uid
OM = ObjectManager(self)
obj = OM.get(data_index_uid)
#
main_sizer = wx.StaticBoxSizer(wx.VERTICAL, self, obj.name)
#
self.top_panel = wx.Panel(self)
self.top_sizer = wx.BoxSizer(wx.HORIZONTAL)
#
self.check_display = wx.CheckBox(self.top_panel, -1, label='Display')
self.check_display.Bind(wx.EVT_CHECKBOX, self._on_check_display)
self.top_sizer.Add(self.check_display, 1, wx.ALIGN_CENTER|wx.LEFT, 30)
#
self.check_range = wx.CheckBox(self.top_panel, -1, label='Range')
self.check_range.Bind(wx.EVT_CHECKBOX, self._on_check_range)
self.top_sizer.Add(self.check_range, 1, wx.ALIGN_CENTER|wx.RIGHT, 30)
self.top_panel.SetSizer(self.top_sizer)
#
main_sizer.Add(self.top_panel, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 3)
#
self.label = obj.name
self.vec = obj.data
self.display = display
self.is_range = is_range
#
self.bottom_panel = wx.Panel(self)
self.bottom_sizer = wx.BoxSizer(wx.VERTICAL)
self.slider = RangeSlider(self.bottom_panel)
self.bottom_sizer.Add(self.slider, 0, wx.EXPAND)
self.text_value = wx.StaticText(self.bottom_panel, -1)
self.bottom_sizer.Add(self.text_value, 0, wx.ALIGN_CENTER)
self.bottom_panel.SetSizer(self.bottom_sizer)
#
main_sizer.Add(self.bottom_panel, 0, wx.EXPAND)
#
self.slider.SetRange(0, len(self.vec)-1)
self.min_idx = min_idx
self.max_idx = max_idx
#
if self.display:
self.set_check_display(1)
else:
self.set_check_display(0)
#
self.Bind(wx.EVT_PAINT, self._on_paint)
self.SetSizer(main_sizer)
main_sizer.Layout()
def __init__(self, parent, *args, **kwargs):#id=-1,
#pos = wx.DefaultPosition, size = wx.DefaultSize,
#style = 0, name="multiSplitter", borderSize = 2,
# borderColor=(0,0,0), sashColor=(0,0,0)):
# always turn on tab traversal
style = wx.TAB_TRAVERSAL
# and turn off any border styles
style &= ~wx.BORDER_MASK
style |= wx.BORDER_NONE
# initialize the base class
wx.Panel.__init__(self, parent, *args, **kwargs)#id, pos, size, style, name)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
# initialize data members
self._windows = []
self._sashes = []
self._permitUnsplitAlways = self.HasFlag(wx.SP_PERMIT_UNSPLIT)
self._dragMode = wx.SPLIT_DRAG_NONE
self._working_sash = -1
self.__absolute_sash_pos = 0
self._oldY = 0
self._checkRequestedSashPosition = False
self._minimumPaneSize = 0
self._sashCursorWE = wx.Cursor(wx.CURSOR_SIZEWE)
self._needUpdating = False
self._isHot = False
self._drawSashInBackgroundColour = False
# Bind event handlers
self.Bind(wx.EVT_PAINT, self._OnPaint)
self.Bind(wx.EVT_IDLE, self._OnIdle)
self.Bind(wx.EVT_SIZE, self._OnSize)
self.Bind(wx.EVT_MOUSE_EVENTS, self._OnMouse)
# Novas variaveis
#self._old_size = (0,0)
self._sash_size = self._border_size = 1
self.borderColor = (0,0,0)
self.sashColor = (0,0,0)
#self.selectedWindowColor = 'green'
self.trackerCanvas = None
self.fit = False
self._ajustes = []
self._proporcao = []
self.ajustado = False
# Tom de azul para sashTrcker
self.sashTrackerColor = 'blue' #(4, 20, 164)