今天我们通过wx.PaintDC在窗体上画出一个五子棋棋盘。要想在wxPython创建的窗体对象上通过wx.PaintDC画图,需要在该窗体上绑定一个画图事件wx.EVT_PAINT,然后在事件处理函数里画出我们需要的线条。 我们的棋盘是画在panel上的,所以画图事件也是绑定在panel上,画图的容器mydc也是建立在panel上。我们通过 self.unit = 30、self.dotnum = 15来控制窗体及棋盘的大小,unit为格子边长,dotnum为棋盘每条边的交点个数。
代码语言:javascript复制#画一个五子棋棋盘
import wx
class myFrame(wx.Frame):
def __init__(self):
self.unit = 30
self.dotnum = 15
super().__init__
(parent=None,pos=[100,100],
size=[self.unit*self.dotnum
self.unit 20,
self.unit*self.dotnum
self.unit 30 20],
title="商贾三国")
self.SetIcon(wx.Icon("WeatherBundle.ico"))
self.panel = wx.Panel(self)
self.panel.SetBackgroundColour((220, 210, 0))
self.panel.Bind(wx.EVT_PAINT,self.draw)
self.Show()
def draw(self,event):
mydc=wx.PaintDC(self.panel)
unit=self.unit
dotnum=self.dotnum
x=unit
y=unit
for i in range(1,dotnum 1):
mydc.DrawLine(x,y,x,unit*dotnum)
x=x unit
x=unit
for i in range(1,dotnum 1):
mydc.DrawLine(x, y, unit*dotnum, y)
y=y unit
myapp=wx.App()
myframe=myFrame()
myapp.MainLoop()
qipan.png