财付通直通车v8正式版
作者:zzj 日期:2008-05-14
详情请看这里:http://www.pythontik.com
wxPython in Action(173)(全文完)
作者:zzj 日期:2008-03-01
wxPython in Action(172)
作者:zzj 日期:2008-03-01
18.6 创建一个多线程的wxPython应用程序
在大多数的GUI应用程序中,在应用程序的后台中长期执行一个处理过程而不干涉用户与应用程序的其它部分的交互是有好处的。允许后台处理的机制通常是产生一个线程并在该线程中长期执行一个处理过程。对于wxPython的多线程,在这一节我们有两点需要特别说明。
最重要的一点是,GUI的操作必须发生在主线程或应用程序的主循环所处的地方中。在一个单独的线程中执行GUI操作对于无法预知的程序崩溃和调试来说是一个好的办法。基于技术方面的原因,如许多Unix的GUI库不是线程安全性的,以及在微软Windows下UI对象的创建问题,wxPython没有设计它自己的发生在多线程中的事件,所以我们建议你也不要尝试。
在大多数的GUI应用程序中,在应用程序的后台中长期执行一个处理过程而不干涉用户与应用程序的其它部分的交互是有好处的。允许后台处理的机制通常是产生一个线程并在该线程中长期执行一个处理过程。对于wxPython的多线程,在这一节我们有两点需要特别说明。
最重要的一点是,GUI的操作必须发生在主线程或应用程序的主循环所处的地方中。在一个单独的线程中执行GUI操作对于无法预知的程序崩溃和调试来说是一个好的办法。基于技术方面的原因,如许多Unix的GUI库不是线程安全性的,以及在微软Windows下UI对象的创建问题,wxPython没有设计它自己的发生在多线程中的事件,所以我们建议你也不要尝试。
Tags: wxpython
wxPython in Action(171)
作者:zzj 日期:2008-02-29
wxPython in Action(170)
作者:zzj 日期:2008-02-29
wxPython in Action(169)
作者:zzj 日期:2008-02-28
wxPython in Action(168)
作者:zzj 日期:2008-02-28
18.3 拖放到的目标
实现拖放到的目标的步骤基本上借鉴了实现拖放源的步骤。其中最大的区别是,实现拖放源,你可以直接使用类wx.DropSource,而对于目标,你首先必须写你的自定义的wx.DropTarget的子类。一旦你有了你的目标类,你将需要创建它的一个实例,并通过使用wx.Window的SetDropTarget(target)方法将该实例与任一
wx.Window的实例关联起来。设置了目标后,wx.Window的实例(不论它是一个窗口,一个按钮,一个文本域或其它的控件)就变成了一个有效的释放目标。为了在你的释放目标上接受数据,你也必须创建一个所需要类型的wx.DataObject对象,并使用释放目标方法SetDataObject(data)将wx.DataObject对象与释放目标关联起来。在实际释放操作前,你需要预先定义数据对象,以便该释放目标能够正确地处理格式。要从目标获取该数据对象,有一个方法GetDataObject()。下面的样板代码使得释放目标能够接受文本(仅能接受文本)。这是因为数据对象已经被设置为wx.TextDataObject的一个实例。
实现拖放到的目标的步骤基本上借鉴了实现拖放源的步骤。其中最大的区别是,实现拖放源,你可以直接使用类wx.DropSource,而对于目标,你首先必须写你的自定义的wx.DropTarget的子类。一旦你有了你的目标类,你将需要创建它的一个实例,并通过使用wx.Window的SetDropTarget(target)方法将该实例与任一
wx.Window的实例关联起来。设置了目标后,wx.Window的实例(不论它是一个窗口,一个按钮,一个文本域或其它的控件)就变成了一个有效的释放目标。为了在你的释放目标上接受数据,你也必须创建一个所需要类型的wx.DataObject对象,并使用释放目标方法SetDataObject(data)将wx.DataObject对象与释放目标关联起来。在实际释放操作前,你需要预先定义数据对象,以便该释放目标能够正确地处理格式。要从目标获取该数据对象,有一个方法GetDataObject()。下面的样板代码使得释放目标能够接受文本(仅能接受文本)。这是因为数据对象已经被设置为wx.TextDataObject的一个实例。
Tags: wxpython
wxPython in Action(167)
作者:zzj 日期:2008-02-27
18.1.5 传递其它格式的数据
经由剪贴板交互位图几乎与传递文本相同。你所使用的相关的数据对象子类是wx.BitmapDataObject,其get*方法和set*方法分别是GetBitmap()和SetBitmap(bitmap)。经由该数据对象与剪贴板交互的数据对象必须是wx.Bitmap类型的。
最后一个预定义的数据对象类型是wx.FileDataObject。通常该数据对象被用于拖放中(将在18.2节中讨论),例如当你将一个文件从你的资源管理器或查找窗口放置到你的应用程序上时。你可以使用该数据对象从剪贴板接受文件名数据,并且你可以使用方法GetFilenames()来从该数据对象获取文件名,该方法返回一个文件名的列表,列表中的每个文件名是已经被添加到剪贴板的文件名。你可以使用该数据对象的AddFile(file)方法来将数据放置到剪贴板上,该方法将一个文件名字符串添加到该数据对象。这里没有其它的方法用于直接处理列表,所以这就要靠你自己了。本章的稍后部份,我们将讨论如何经由剪贴板传送自定义对象,以及如何拖放对象。
经由剪贴板交互位图几乎与传递文本相同。你所使用的相关的数据对象子类是wx.BitmapDataObject,其get*方法和set*方法分别是GetBitmap()和SetBitmap(bitmap)。经由该数据对象与剪贴板交互的数据对象必须是wx.Bitmap类型的。
最后一个预定义的数据对象类型是wx.FileDataObject。通常该数据对象被用于拖放中(将在18.2节中讨论),例如当你将一个文件从你的资源管理器或查找窗口放置到你的应用程序上时。你可以使用该数据对象从剪贴板接受文件名数据,并且你可以使用方法GetFilenames()来从该数据对象获取文件名,该方法返回一个文件名的列表,列表中的每个文件名是已经被添加到剪贴板的文件名。你可以使用该数据对象的AddFile(file)方法来将数据放置到剪贴板上,该方法将一个文件名字符串添加到该数据对象。这里没有其它的方法用于直接处理列表,所以这就要靠你自己了。本章的稍后部份,我们将讨论如何经由剪贴板传送自定义对象,以及如何拖放对象。
Tags: wxpython






