wxpython简友广场Python轻应用

4.Python画一个五子棋棋盘

2020-06-09  本文已影响0人  赵明嗯

今天我们通过wx.PaintDC在窗体上画出一个五子棋棋盘。要想在wxPython创建的窗体对象上通过wx.PaintDC画图,需要在该窗体上绑定一个画图事件wx.EVT_PAINT,然后在事件处理函数里画出我们需要的线条。
我们的棋盘是画在panel上的,所以画图事件也是绑定在panel上,画图的容器mydc也是建立在panel上。我们通过 self.unit = 30、self.dotnum = 15来控制窗体及棋盘的大小,unit为格子边长,dotnum为棋盘每条边的交点个数。

#画一个五子棋棋盘
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
上一篇下一篇

猜你喜欢

热点阅读