wxPython实例

1 篇文章 0 订阅
1 篇文章 0 订阅

今天用wxPython做了一个小游戏.

import wx
from random import choice,shuffle
class frame(wx.Frame):
    def __init__(self,app):
        wx.Frame.__init__(self,None,title='翻牌',size=(400,300))
        p=wx.Panel(self)
        p.SetBackgroundColour('White')#设置背景颜色
        gs=wx.GridSizer(4,5,5,5)#创建GridSizer网格布局
        self.button=list()
        for i in range(1,21):
            b=wx.Button(p,i,label='快来翻我!')
            self.button.append(b)
            gs.Add(b,0,wx.EXPAND)
            b.Bind(wx.EVT_BUTTON,self.onbutton,id=i)
            #循环往布局中加入按钮
        p.SetSizer(gs)
        self.l=[None,None]#被按下的按钮
        self.dats=list()#按钮代表的值
        for i in range(1,11):
            self.dats.append(choice([1,2,3,4,5]))#随机添加十个数字(1-5)
        for i in range(1,11):
            self.dats.append(self.dats[i-1])#复制另外十个数字,因为要保证哪一个数字都有至少一对,这样才能翻完.
        shuffle(self.dats)#打乱顺序
        self.timer=wx.Timer(self)
        self.Bind(wx.EVT_TIMER,self.ontimer,self.timer)
        self.ID=list()#被按过按钮的ID
        self.IDs=[None,None]#对应self.l,这是被按下的两个按钮的ID
        self.ActiveIDCount=0#在ID中还没有被翻回的按钮的数量
        self.Show()
        app.MainLoop()#主循环
    def onbutton(self,e):#当按下按钮
        event=e.GetEventObject()
        if event.GetLabel()=='我已阵亡。':
            return -1
        if(self.l[0] and self.IDs[0]!=event.GetId()):
            self.l[1]=str(self.dats[event.GetId()-1])
            self.IDs[1]=event.GetId()#设置self.l
        elif not self.l[0]:
            self.l[0]=str(self.dats[event.GetId()-1])
            self.IDs[0]=event.GetId()
        event.SetLabel(str(self.dats[event.GetId()-1]))
        self.ID.append(event)
        self.ActiveIDCount+=1
        self.timer.Start(700)#700毫秒后翻回按钮
    def ontimer(self,e):#返回并监测是否有两个按钮被翻开且数值一样
        if self.ActiveIDCount==0:
            return -1
        if not len(self.ID)==self.ActiveIDCount:
            del self.ID[0:len(self.ID)-self.ActiveIDCount]
        if self.l[0]==self.l[1]:
            self.l=[None,None]
            for i in self.ID:
                i.SetLabel('我已阵亡。')
                self.ActiveIDCount-=1
            return -1
        for i in self.ID:
            i.SetLabel('快来翻我!')
            self.ActiveIDCount-=1
        self.l=[None,None]
app = wx.App()#创建app对象
frame(app)#调用

结果:
开始
在翻开两个同样的之后:
阵亡

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值