
I think there's a bug in the toolbar event handler. Here's the relevant code: #------------------------------------------------------- class KtIde(WinForms.Form): """A simple Integrated Development Environment for Python.NET from Kokopelli Technology.""" def __init__(self): # a bunch of stuff... # Add a toolbar self.toolBar1 = WinForms.ToolBar() self.imageList1 = WinForms.ImageList(self.components) self.toolBarButton1 = WinForms.ToolBarButton() self.toolBar1.Buttons.Add(self.toolBarButton1) self.toolBar1.ImageList = self.imageList1 self.toolBar1.Location = Point(0, 30) self.toolBar1.Name = "toolBar1" self.toolBar1.ShowToolTips = True self.toolBar1.Size = Size(632, 28) self.toolBar1.TabIndex = 0 # # Image list # self.imageList1.ImageSize = Size(16, 16) self.imageList1.TransparentColor = Color.Transparent fname = "ARW01RT.ICO" self.imageList1.Images.Add(Image.FromFile(fname)) # toolBarButtons self.toolBarButton1.ImageIndex = 0 ###################### PROBLEM ######################## self.toolBar1.ButtonClick += self.toolBar1_ButtonClick # Or is it...? #self.toolBar1.ButtonClick += WinForms.ToolBarButtonClickEventHandler(self.toolBar1_ButtonClick) ########################################################## # more stuff.... def toolBar1_ButtonClick(self, sender, args): '''The toolbar event handler''' MessageBox.Show(args.ToString()) #~ if args.Button == self.toolBarButton1: #~ MessageBox.Show("Hey, it works!") #------------------------------------------------------- This bombs every time I press the toolbar button -- unhandled exception. Message is: ************** Exception Text ************** Python.Runtime.PythonException: Exception of type Python.Runtime.PythonException was thrown. at Python.Runtime.Dispatcher.Dispatch(ArrayList args) at __System_Windows_Forms_ToolBarButtonClickEventHandlerDispatcher.Invoke(Objec t , ToolBarButtonClickEventArgs ) at System.Windows.Forms.ToolBar.OnButtonClick(ToolBarButtonClickEventArgs e) at System.Windows.Forms.ToolBar.WmReflectCommand(Message& m) at System.Windows.Forms.ToolBar.WndProc(Message& m) at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) Any clues? Also, this is the most fun I've had programming in a LONG time. MFC is out the window. Brian -- my hat is off to you. Many thanks for your efforts. Cheers, --Thane Thane Plummer CEO Magna Capital "La perfection est atteinte non quand il ne reste rien à ajouter, mais quand il ne reste rien à enlever" Antoine de St. Exupery from The Little Prince (perfection is reached not when there's nothing left to add, but when there's nothing left to remove)

Glad you're enjoying it :) What you're seeing is almost always due to an exception being raised in the Python callback (which has nowhere good to go in a windows app - need to think about what to do there). The first thing to try is replacing the body of your callback with just 'pass' or 'return'. Now, if you can click the thing that calls it w/o getting an error, you've verified that theres some prob with the Python code. If so, 'the debugger is your friend', as Jim always tells me :) Put a import pdb pdb.set_trace() ...at the top of the callback method code and go from there. Given the one-liner in your example, the only thing I can think of is if MessageBox hasn't been defined as a name (maybe you need to use the fully-qualified name or import that name explicitly?) Hope this helps, Brian Lloyd brian@zope.com V.P. Engineering 540.361.1716 Zope Corporation http://www.zope.com -----Original Message----- From: pythondotnet-bounces@python.org [mailto:pythondotnet-bounces@python.org]On Behalf Of Thane Sent: Thursday, January 08, 2004 6:21 PM To: pythondotnet@python.org Subject: [Python.NET] Problem with toolbar I think there's a bug in the toolbar event handler. Here's the relevant code: #------------------------------------------------------- class KtIde(WinForms.Form): """A simple Integrated Development Environment for Python.NET from Kokopelli Technology.""" def __init__(self): # a bunch of stuff... # Add a toolbar self.toolBar1 = WinForms.ToolBar() self.imageList1 = WinForms.ImageList(self.components) self.toolBarButton1 = WinForms.ToolBarButton() self.toolBar1.Buttons.Add(self.toolBarButton1) self.toolBar1.ImageList = self.imageList1 self.toolBar1.Location = Point(0, 30) self.toolBar1.Name = "toolBar1" self.toolBar1.ShowToolTips = True self.toolBar1.Size = Size(632, 28) self.toolBar1.TabIndex = 0 # # Image list # self.imageList1.ImageSize = Size(16, 16) self.imageList1.TransparentColor = Color.Transparent fname = "ARW01RT.ICO" self.imageList1.Images.Add(Image.FromFile(fname)) # toolBarButtons self.toolBarButton1.ImageIndex = 0 ###################### PROBLEM ######################## self.toolBar1.ButtonClick += self.toolBar1_ButtonClick # Or is it...? #self.toolBar1.ButtonClick += WinForms.ToolBarButtonClickEventHandler(self.toolBar1_ButtonClick) ########################################################## # more stuff.... def toolBar1_ButtonClick(self, sender, args): '''The toolbar event handler''' MessageBox.Show(args.ToString()) #~ if args.Button == self.toolBarButton1: #~ MessageBox.Show("Hey, it works!") #------------------------------------------------------- This bombs every time I press the toolbar button -- unhandled exception. Message is: ************** Exception Text ************** Python.Runtime.PythonException: Exception of type Python.Runtime.PythonException was thrown. at Python.Runtime.Dispatcher.Dispatch(ArrayList args) at __System_Windows_Forms_ToolBarButtonClickEventHandlerDispatcher.Invoke(Objec t , ToolBarButtonClickEventArgs ) at System.Windows.Forms.ToolBar.OnButtonClick(ToolBarButtonClickEventArgs e) at System.Windows.Forms.ToolBar.WmReflectCommand(Message& m) at System.Windows.Forms.ToolBar.WndProc(Message& m) at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) Any clues? Also, this is the most fun I've had programming in a LONG time. MFC is out the window. Brian -- my hat is off to you. Many thanks for your efforts. Cheers, --Thane Thane Plummer CEO Magna Capital "La perfection est atteinte non quand il ne reste rien à ajouter, mais quand il ne reste rien à enlever" Antoine de St. Exupery from The Little Prince (perfection is reached not when there's nothing left to add, but when there's nothing left to remove)
participants (2)
-
Brian Lloyd
-
Thane