`

python中的拖动源

 
阅读更多
#coding=utf-8
import wx
class DragController(wx.Control):
	   
	"""Just a little control to handle dragging the text from a text
	control.  We use a separate control so as to not interfere with
	the native drag-select functionality of the native text control."""
	   
	def __init__(self, parent, source, size=(25,25)):
		wx.Control.__init__(self, parent, -1, size=size,
							style=wx.SIMPLE_BORDER)
		self.source = source
		self.SetMinSize(size)
		self.Bind(wx.EVT_PAINT, self.OnPaint)
		self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
		
	def OnPaint(self, evt):
		# draw a simple arrow
		dc = wx.BufferedPaintDC(self)
		dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
		dc.Clear()
		w, h = dc.GetSize()
		y = h/2
		dc.SetPen(wx.Pen("dark blue",2))
		dc.DrawLine(w/8,y,w-w/8,y)
	def OnLeftDown(self,evt):
		text=self.source.GetValue()
		data=wx.TextDataObject(text)
		dropSource=wx.DropSource(self)#创建释放源
		dropSource.SetData(data)#设置数据
		result=dropSource.DoDragDrop(wx.Drag_AllowMove)#执行释放
		#iftheuserwantstomovethedatathenweshoulddeleteit
		#fromthesource
		if result== wx.DragMove:
			self.source.SetValue("")#如果需要的话,删除源中的数据
		
class MyFrame(wx.Frame):
	def __init__(self):
		wx.Frame.__init__(self,None,title="DropSource")
		self.SetSize((400,400))
		p=wx.Panel(self)
		#createthecontrols
		label1=wx.StaticText(p,-1,"Put some text in this control:",size=(200,100))
		label2=wx.StaticText(p,-1,
		"Then drag from the neighboring bitmap and\n"
		"drop in an application that accepts dropped\n"
		"text,such as MSWord.",size=(200,100))
		text=wx.TextCtrl(p,-1,"Sometext")
		dragctl=DragController(p,text)
		#setupthelayoutwithsizers
		sizer=wx.BoxSizer(wx.VERTICAL)
		sizer.Add(label1,0,wx.ALL,5)
		hrow=wx.BoxSizer(wx.HORIZONTAL)
		hrow.Add(text,1,wx.RIGHT,5)
		hrow.Add(dragctl,0)
		sizer.Add(hrow,0,wx.EXPAND|wx.ALL,5)
		p.SetSizer(sizer)
		sizer.Fit(self)
app=wx.PySimpleApp()
frm=MyFrame()
frm.Show()
app.MainLoop()
分享到:
评论

相关推荐

    用vb设计python页面 vb防拖控件拖动卡顿、增加鼠标滚轮支持,Visual Tkinter 使用VB设计python界面的

    "vb防拖控件拖动卡顿"可能是指在设计过程中,某些控件在拖动时可能出现的不流畅现象。这可能是由于资源管理或者事件处理机制的问题,解决方法可能包括优化控件的绘制算法,确保及时释放不再使用的资源,或者调整事件...

    python 超级画板程序源程序.rar

    2. **图形库**:源程序可能使用了Tkinter、Pygame或matplotlib等Python图形库中的一个或多个。Tkinter是Python的标准GUI库,易于学习且与操作系统兼容性好;Pygame适合创建游戏和动画,提供了丰富的图形功能;...

    python3.10最新版本下载,内含linux/windwos/macos安装包

    - **结构化赋值(Pattern Matching)**:Python 3.10 引入了类似元组解包的新特性,允许在`match`语句中进行模式匹配,提高代码的可读性和灵活性。 - **注解增强**:类型注解现在可以用于函数参数的默认值,进一步...

    python2.7.0.rar

    3. **python-2.7-macosx10.5.dmg**:这是Mac OS X的安装镜像,用户需双击打开,然后将Python图标拖拽到“应用程序”文件夹完成安装。 4. **Python-2.7.tgz**:这是另一个Linux和Unix系统的源代码压缩包,与Python-...

    基于拼图游戏的Python源代码包

    在本资源中,我们主要关注的是一个基于Python编程语言实现的拼图游戏。这个源代码包是为了让初学者和对编程感兴趣的用户能够更好地理解和学习Python编程。通过分析和研究这个项目,我们可以掌握一些重要的Python编程...

    超级画板Python源代码【含开发文档程序使用说明+配置文件】

    《超级画板Python源代码详解及应用》 在IT领域,Python作为一种强大的编程语言,广泛应用于后端开发、数据分析、机器学习等多个方面。本资源集合提供了22个Python项目的源代码,特别关注的是"超级画板"这一部分,它...

    毕业设计,基于Python+Django+Vue+MySql开发的前后端分离的秸秆发酵预测管理系统,内含Python完整源代码

    毕业设计,基于Python+Django+Vue+MySql开发的前后端分离的秸秆发酵预测管理系统,内含Python完整源代码 秸秆发酵数据预测管理后台 使用说明 安装 nodejs,版本大于16就可以了,nodejs官网 安装 Python3 后端: ...

    用易语言编写的python图形界面设计工具,很好用

    3. "EP.py":这是一个Python源代码文件,"EP"可能是工具的缩写,".py"是Python的标准文件扩展名。这个文件可能包含了工具的一些核心功能或者辅助模块。 综合以上信息,我们可以推测这是一个基于易语言开发的Python ...

    PYTHON制作画加书法源程序.rar.rar

    标题 "PYTHON制作画加书法源程序.rar.rar" 暗示了这个压缩包包含一个使用Python编程语言编写的源代码程序,可能是一个结合了绘画和书法元素的应用或工具。描述中的信息同样简洁,只提到了文件名,因此我们主要依据...

    毕业设计,基于Python+Flask+PyCharm开发的二手交易购物商城,内含Python完整源代码,数据库脚本

    毕业设计,基于Python+Flask+PyCharm开发的二手交易购物商城,内含Python完整源代码,数据库脚本 Python基于Flask框架二手交易购物商城设计毕业源码案例设计 技术环境: PyCharm + Flask + Python3.7 + Redis + ...

    Python库 | MAST_U_DMS_GUI-0.1.9-py3-none-any.whl

    这将把库安装到你的Python环境中,使得你可以在项目中通过`import MAST_U_DMS_GUI`来使用它。 **Python GUI编程** 在Python中创建GUI应用程序,有许多库可以选择,如Tkinter(内置),wxPython,PyQt,Kivy等。`...

    Python-labelme用Python实现的图像可视化标记工具

    - **易用性**:`labelme`提供了一种直观的拖拽和绘制方式,使得非程序员也能快速上手进行图像标注。 - **多格式支持**:除了生成XML,它还可以将标注结果导出为JSON格式,方便跨平台和不同项目间的协作。 - **实时...

    Python库 | pytrnsys-gui-0.9a13.tar.gz

    一旦安装成功,开发者可以在他们的Python脚本中通过import语句导入这个库,并调用其中的函数或类来实现与TRNSYS的交互。 pytrnsys-gui的核心功能在于提供图形化界面,使得用户可以通过拖拽和配置组件来构建复杂的...

    python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例

    在Python的GUI编程中,PyQt5库是一个广泛使用的框架,它提供了丰富的功能来创建复杂的图形用户界面。本文将深入探讨PyQt5中的QSplitter布局控件,这是一个动态的布局管理器,允许用户通过拖动边界来调整子控件的大小...

    xlsgrid,python

    Python中的`wx.grid`是`wxPython`库的一部分,它是一个用于创建窗口应用程序的强大工具,特别是在处理二维数据网格时。`wxPython`是Python的一种GUI(图形用户界面)工具包,它提供了丰富的控件和组件,使开发者可以...

    listbox拖拽功能实现

    * 在DragDrop事件中,需要将拖拽的项目添加到目标ListBox控件中,并将其从源ListBox控件中删除。 * 在DragOver事件中,需要判断拖拽的项目是否可以添加到目标ListBox控件中,以避免出现异常情况。 通过实现ListBox...

    第01课-初识Python-小学五年级兴趣课

    编译器将源代码(人类可读的程序代码,如Python、C语言等)翻译成机器代码(计算机可执行的代码),而解释器则是逐行将源代码翻译成机器代码并立即执行。解释型语言如Python在运行时解释执行,不需要事先编译,这为...

    python+qt+PyQt5+全套示例代码+精心整理+含代码注释

    - `audio.ico`、`web.png`、`max.png`、`med.png`、`min.png`:这些文件用于设置应用程序的图标和按钮图像,展示了PyQt5中如何加载和显示图像资源,以及如何自定义控件外观。例如,可以使用QIcon类来加载ico图标,...

    python3+PyQt5实现拖放功能

    在GUI(图形用户界面)编程中,拖放(Drag and Drop)是一种用户界面交互方式,允许用户通过将对象拖拽到另一个位置来执行命令或者数据传输。Python是一种广泛使用的编程语言,而PyQt5是一个用于创建GUI应用的工具集...

    计算机毕业设计 超级画板程序使用说明 Python源代码+开发文档说明 软件/插件 范文 模板 素材 项目源码Python源码

    【超级画板程序使用说明及Python源代码解析】 在计算机科学与信息技术领域,毕业设计是一项重要的实践环节,它要求学生运用所学知识独立完成一个完整的软件项目。本资源包提供了一个名为“超级画板”的程序,它是一...

Global site tag (gtag.js) - Google Analytics