def OnPageClose(self, event):
"""Callback function when AUINotebook Page closed with CloseButton
:param event: AUINotebook Event.
"""
selected = self.TabsOpened.GetSelection()
if selected > -1:
window = self.TabsOpened.GetPage(selected)
if window.CheckSaveBeforeClosing():
# Refresh all window elements that have changed
wx.CallAfter(self._Refresh, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU)
wx.CallAfter(self.RefreshTabCtrlEvent)
wx.CallAfter(self.CloseFindInPouDialog)
event.Skip()
else:
event.Veto()
python类CallAfter()的实例源码
def __init__(self, parent, id=wx.ID_ANY, style=wx.ST_SIZEGRIP,
name="EnhancedStatusBar"):
"""Default Class Constructor.
EnhancedStatusBar.__init__(self, parent, id=wx.ID_ANY,
style=wx.ST_SIZEGRIP,
name="EnhancedStatusBar")
"""
wx.StatusBar.__init__(self, parent, id, style, name)
self._items = {}
self._curPos = 0
self._parent = parent
wx.EVT_SIZE(self, self.OnSize)
wx.CallAfter(self.OnSize, None)
def GetPageSizeChangedFunction(self, spinctrl, name):
def PageSizeChangedFunction(event):
if self.Controller is not None:
if self.Values is not None:
old_value = self.Values.get("pageSize")
else:
old_value = (0, 0)
if name == 'PageWidth':
new_value = (spinctrl.GetValue(), old_value[1])
else:
new_value = (old_value[0], spinctrl.GetValue())
if old_value != new_value:
self.Controller.SetProjectProperties(properties={"pageSize": new_value})
self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
PAGETITLES, SCALING)
wx.CallAfter(self.RefreshView)
event.Skip()
return PageSizeChangedFunction
def GetScalingChangedFunction(self, spinctrl, language, name):
def ScalingChangedFunction(event):
if self.Controller is not None:
old_value = (0, 0)
if self.Values is not None:
scaling = self.Values.get("scaling")
if scaling is not None:
old_value = scaling.get(language)
if name == 'XScale':
new_value = (spinctrl.GetValue(), old_value[1])
else:
new_value = (old_value[0], spinctrl.GetValue())
if old_value != new_value:
self.Controller.SetProjectProperties(properties={"scaling": {language: new_value}})
self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
PAGETITLES, SCALING)
wx.CallAfter(self.RefreshView)
event.Skip()
return ScalingChangedFunction
def OnViewerRightUp(self, event):
if self.GetDrawingMode() == FREEDRAWING_MODE:
Viewer.OnViewerRightUp(self, event)
else:
element = self.FindElement(event)
if element:
if self.SelectedElement and self.SelectedElement != element:
self.SelectedElement.SetSelected(False)
self.SelectedElement = element
if self.IsWire(self.SelectedElement):
self.SelectedElement.SetSelectedSegment(0)
else:
self.SelectedElement.SetSelected(True)
self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling)
self.SelectedElement.Refresh()
wx.CallAfter(self.SetCurrentCursor, 0)
event.Skip()
def OnEnumeratedValueEndEdit(self, event):
text = event.GetText()
values = self.EnumeratedValues.GetStrings()
index = event.GetIndex()
if index >= len(values) or values[index].upper() != text.upper():
if text.upper() in [value.upper() for value in values]:
message = wx.MessageDialog(self, _("\"%s\" value already defined!") % text, _("Error"), wx.OK | wx.ICON_ERROR)
message.ShowModal()
message.Destroy()
event.Veto()
elif text.upper() in IEC_KEYWORDS:
message = wx.MessageDialog(self, _("\"%s\" is a keyword. It can't be used!") % text, _("Error"), wx.OK | wx.ICON_ERROR)
message.ShowModal()
message.Destroy()
else:
initial_selected = None
if index < len(values) and self.EnumeratedInitialValue.GetStringSelection() == values[index]:
initial_selected = text
wx.CallAfter(self.RefreshEnumeratedValues, initial_selected)
wx.CallAfter(self.RefreshTypeInfos)
event.Skip()
else:
event.Skip()
wxPython_Wallpaper.py 文件源码
项目:Python-GUI-Programming-Cookbook-Second-Edition
作者: PacktPublishing
项目源码
文件源码
阅读 17
收藏 0
点赞 0
评论 0
def sizeCallback(self, event):
wx.CallAfter(self.setViewport)
event.Skip()
wxPython_OpenGL_GUI.py 文件源码
项目:Python-GUI-Programming-Cookbook-Second-Edition
作者: PacktPublishing
项目源码
文件源码
阅读 16
收藏 0
点赞 0
评论 0
def sizeCallback(self, event):
wx.CallAfter(self.setViewport)
event.Skip()
import_OpenGL_cube_and_cone.py 文件源码
项目:Python-GUI-Programming-Cookbook-Second-Edition
作者: PacktPublishing
项目源码
文件源码
阅读 17
收藏 0
点赞 0
评论 0
def OnSize(self, event):
wx.CallAfter(self.DoSetViewport)
event.Skip()
wxPython_Wallpaper_simple.py 文件源码
项目:Python-GUI-Programming-Cookbook-Second-Edition
作者: PacktPublishing
项目源码
文件源码
阅读 19
收藏 0
点赞 0
评论 0
def sizeCallback(self, event):
wx.CallAfter(self.setViewport)
event.Skip()
def setImage(self):
if self.obj is not None:
self.img = self.obj.getViewTable(self.GetSize(), self.begin, self.end)
wx.CallAfter(self.Refresh)
def updatePlayCursorPos(self, pos):
w,h = self.GetSize()
# Function receives value between 0 and 1.0. This value needs to be converted into absolute pixels.
pos = math.floor(pos * w)
self.playCursorPos = pos
wx.CallAfter(self.Refresh)
def OnSize(self, evt):
wx.CallAfter(self.setImage)
def update(self):
"""
Display updating method.
This method is automatically called by the audio memory
object (SndTable) when the table is modified.
The method setTable(obj) must be used to register the audio
memory object.
"""
wx.CallAfter(self.sndview.setImage)
def write(self, string):
if string.startswith("\r"):
# carriage return -> remove last line i.e. reset position to start of last line
current_value = self.__out.GetValue()
last_newline = current_value.rfind("\n")
new_value = current_value[:last_newline + 1] # preserve \n
new_value += string[1:] # chop off leading \r
wx.CallAfter(self.__out.SetValue, new_value)
else:
wx.CallAfter(self.__out.AppendText, string)
def AddMessage(self, message):
lock.acquire()
try:
logging.debug("Incoming message: {}".format(message))
newStatus = "{}\n".format(message)
wx.CallAfter(self.statusUpdates.AppendText, newStatus)
finally:
lock.release() # release lock, no matter what
def on_left_down(self, event):
if self.HitTest(event.GetPosition()) != wx.NOT_FOUND:
index = self.HitTest(event.GetPosition())
self.selected_items[index] = not self.selected_items[index]
# doesn't really work to update selection direclty (focus issues)
# instead we wait for the EVT_LISTBOX event and fix the selection
# there...
# self.update_selection()
# TODO: we could probably use wx.CallAfter
event.Skip()
def on_tab_change(self, event):
self.page2.list_box.SetFocus()
page_to_select = event.GetSelection()
wx.CallAfter(self.fix_focus, page_to_select)
event.Skip(True)
def _invoke(self, callable, *args):
wx = self._wx
wx.CallAfter(callable, *args)
def _fade_sync(self, vol_range, delay):
window_exists = self.window_exists()
if window_exists:
wx.CallAfter(lambda: self.window.vol_slider.Enable(False))
vol_msg = ''
for i in vol_range:
self.player.audio_set_volume(i)
vol_msg = 'Vol: %d' % self.player.audio_get_volume()
wx.CallAfter(lambda: self.parent.set_bg_player_status('Fading %s... %s' %
('in' if vol_range[0] < vol_range[-1] else 'out',
vol_msg)))
if window_exists:
def ui_upd():
self.window.vol_slider.SetValue(i)
self.window.vol_label.SetLabel("FAD: %d" % i)
wx.CallAfter(ui_upd)
time.sleep(delay)
wx.CallAfter(lambda: self.parent.set_bg_player_status(vol_msg))
if window_exists:
def ui_upd():
self.window.vol_slider.Enable(True)
self.window.vol_label.SetLabel("VOL: %d" % i)
wx.CallAfter(ui_upd)