本入门教程中的所有案例均已测试通过,具体参考入门1中的使用方法。
01 入门1
02 入门2
03 布局管理1
04 布局管理2
05 菜单栏1
06 菜单栏2
07 工具栏
08 基本控件1
09 基本控件2
10 基本控件3
11 基本控件4
12 高级控件1
13 高级控件2
14 对话框1
15 对话框2
16 拖拽功能
17 绘图1
18 绘图2
19 绘图3
20 绘图4
21 进度条
22 游戏——贪吃蛇
目标:实现按钮的拖拽位置移动
本案例中,可以按住鼠标左键,将按钮任意拖动位置。
# encoding: utf-8
import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
from System.Windows.Forms import Application, Form, Button
from System.Drawing import Size, Point
class IForm(Form):
def __init__(self):
self.Text = 'Drag & Drop'
button = Button()
button.Parent = self
button.Text = 'Button'
button.MouseDown += self.OnMousDown
button.MouseUp += self.OnMousUp
button.MouseMove += self.OnMousMove
button.Location = Point(20, 20)
self.isDragging = False
self.CenterToScreen()
def OnMousDown(self, sender, event):
self.isDragging = True
self.oldX = event.X
self.oldY = event.Y
def OnMousMove(self, sender, event):
if self.isDragging:
sender.Top = sender.Top + (event.Y - self.oldY)
sender.Left = sender.Left + (event.X - self.oldX)
def OnMousUp(self, sender, event):
self.isDragging = False
Application.Run(IForm())
效果展示:
目标:实现文字的拖拽移动
本案例中,可以选中输入的文字,并文字拖入到按钮中显示。
# encoding: utf-8
import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
from System.Windows.Forms import Application, Form, Button
from System.Windows.Forms import TextBox, DragDropEffects, DataFormats
from System.Drawing import Size, Point
class IForm(Form):
def __init__(self):
self.Text = 'Drag & Drop'
self.AllowDrop = True
button = Button()
button.Parent = self
textBox = TextBox()
textBox.Parent = self
button.AllowDrop = True
button.Location = Point(150, 50)
button.DragDrop += self.OnDragDrop
button.DragEnter += self.OnDragEnter
textBox.Location = Point(15, 50)
textBox.MouseDown += self.OnMousDown
self.ClientSize = Size(250, 200)
self.CenterToScreen()
def OnMousDown(self, sender, event):
sender.SelectAll()
sender.DoDragDrop(sender.Text, DragDropEffects.Copy)
def OnDragEnter(self, sender, event):
if event.Data.GetDataPresent(DataFormats.Text):
event.Effect = DragDropEffects.Copy
def OnDragDrop(self, sender, event):
sender.Text = event.Data.GetData(DataFormats.Text)
Application.Run(IForm())
效果展示:
目标:实现图片的拖拽移动
本案例中,可以按住鼠标左键,将图片任意拖动位置。
# encoding: utf-8
import sys
import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
from System.Windows.Forms import Application, Form, PictureBox, PictureBoxSizeMode
from System.Windows.Forms import Cursors
from System.Drawing import Size, Point, Rectangle, Brushes, Bitmap
path = r"D:\01-图片\12345.png"
class IForm(Form):
def __init__(self):
self.ClientSize = Size(350, 250)
self.Text = "Dragging Images"
self.Paint += self.OnPaint
self.isDragging = False
self.dropRect = Rectangle(10, 10, 200, 160)
self.brush = Brushes.Gray
picBox = PictureBox()
self.loadImage()
self.isDragging = False
self.CenterToScreen()
picBox.Parent = self
picBox.Location = Point(100, 50)
picBox.Size = Size(self.image.Width, self.image.Height)
picBox.Image = self.image
picBox.MouseDown += self.OnMousDown
picBox.MouseUp += self.OnMousUp
picBox.MouseMove += self.OnMousMove
picBox.Cursor = Cursors.Hand
def loadImage(self):
try:
self.image = Bitmap(path)
except Exception, e:
print"Error reading image"
print e.message
sys.exit(1)
def OnMousMove(self, sender, event):
if self.isDragging:
sender.Top = sender.Top + (event.Y - self.oldY)
sender.Left = sender.Left + (event.X - self.oldX)
def OnMousUp(self, sender, event):
self.isDragging = False
if self.dropRect.Contains(sender.Bounds):
self.brush = Brushes.Gold
else:
self.brush = Brushes.Gray
self.Refresh()
def OnMousDown(self, sender, event):
self.isDragging = True
self.oldX = event.X
self.oldY = event.Y
def OnPaint(self, event):
g = event.Graphics
g.FillRectangle(self.brush, self.dropRect)
Application.Run(IForm())
效果展示: