目录

  • 用到的组件
  • 代码

用到的组件

纽扣是最重要的元素,它们接收用户点击,激活大部分程序功能。想要定义自己的按钮,通常可以使用button Element button来实现。
layout = [[sg.Button(‘My Button’)]]

button_text参数:当读取一个窗口时,返回的就是这个文本参数,该参数将告诉您单击了哪个按钮;在按钮调用中更改button_text参数,可更改所有按钮的文本。
也可使用key参数,这样,在如下的layout中,当单击按钮时,从Window.read()调用返回的事件是key的值"BUTTON_KEY"。
layout = [[sg.Button(‘My Button’, key=‘BUTTON_KEY’)]]
用于查找元素的Window方法调用是:FindElement或window[key]
Columns、Frames和Tabs都是“容器元素”,它们的使用方法类似。
能够使用Column Element完成更复杂的布局。可以将Column看作窗口中的窗口。在单个行中指定一个以上的元素时,需要使用Column Element。

代码

# /usr/bin/env python3
# -*- coding: utf-8 -*-
#2-8-6-3.py
import PySimpleGUIWeb as sg
import random MAX_ROWS = MAX_COLS = 10
MAX_MINES_COUNT=20
MINE_TAG='@'
NO_MINE_TAG=0
successTags=set()mineBits=random.sample([(i, j) for i in range(MAX_ROWS) for j in range(MAX_COLS)],k=MAX_MINES_COUNT)def getMineMap():minesInfo=[[0 for i in range(MAX_ROWS)] for j in range(MAX_COLS)] for x,y in mineBits:  minesInfo[x][y]=MINE_TAGfor minePos in mineBits:x,y=minePosaroundPos=getAroundPos(x,y)for i,j in aroundPos:if (i,j) not in mineBits:minesInfo[i][j]+=1return minesInfodef getAroundPos(x,y):aroundPosAdd=[(xAdd,yAdd) for xAdd  in [-1,0,1] for yAdd in [-1,0,1]]aroundPos=[(x+xAdd,y+yAdd) for xAdd,yAdd in aroundPosAdd if x+xAdd>=0 and y+yAdd>=0 and x+xAdd<MAX_ROWS and y+yAdd<MAX_COLS]return aroundPosdef showAllMines(win):for minePos in mineBits:if win[minePos].get_text()=='*':win[minePos].update(button_color=('green','red')) elif win[minePos].get_text()!=MINE_TAG:win[minePos].update(MINE_TAG) win['gameResult'].update("本局成绩:"+str(int(len(successTags)/len(mineBits)*100)))def main(): isGameRestart=TrueSelBtLayout = [[sg.Button('不是雷',key='noTagMine')], \[sg.Button('标注雷',key='tagMine')],\[sg.Button('点按此格',key='clickCell')],\[sg.Button('结束本局',key='showAll')],\[sg.Text('本局成绩:',key='gameResult')],]MinesLayout =[[sg.Button('?', size=(4, 2), key=(i,j), pad=(0,0),button_color=('white','green')) for j in range(MAX_COLS)] for i in range(MAX_ROWS)]mainLayout=[[sg.Frame('雷区', MinesLayout, font='Any 20', title_color='green'),\sg.Column(SelBtLayout)],\[sg.Button('重新开始游戏',key='restartGame'),\sg.Button('退出游戏',key='exitGame')]]window = sg.Window('扫雷', mainLayout)while isGameRestart:minesInfo =getMineMap()selX=selY=-1oldX=oldY=-1isGameContinue=Truewhile True:event, values = window.read()if event in (sg.WIN_CLOSED, 'Exit') or event=='exitGame':isGameRestart=False#最后从屏幕上移除window.close()                 breakelif event=='restartGame':showAllMines(window)  for i in range(MAX_ROWS):for j in range(MAX_ROWS):window[(i,j)].update("?",button_color=('white','green'))successTags.clear()                  breakif isGameContinue:if event=='tagMine' and selX>=0 and selY>=0 and minesInfo[selX][selY]==MINE_TAG :successTags.add((selX,selY))elif event=='noTagMine' and selX>=0 and selY>=0 and minesInfo[selX][selY]==MINE_TAG :successTags.discard((selX,selY))  if event=='tagMine' or event=='noTagMine':if selX>=0 and selY>=0:if event=='tagMine':if window[(selX,selY)].get_text()=='?':window[(selX,selY)].update('*')else:if window[(selX,selY)].get_text()=='*':window[(selX,selY)].update('?',button_color=('white','green'))elif event=='clickCell':window[(selX,selY)].update(minesInfo[selX][selY],button_color=('yellow','blue'))if window[(selX,selY)].get_text()==MINE_TAG:window[(selX,selY)].update(minesInfo[selX][selY],button_color=('red','black'))elif event=='showAll':showAllMines(window)isGameContinue=Falseelse:if oldX>=0 and oldY>=0 and window[(selX,selY)].get_text()!=MINE_TAG:window[(oldX,oldY)].update(button_color=('white','green'))selX=event[0]selY=event[1]if window[(selX,selY)].get_text()!=MINE_TAG:window[event].update(button_color=('Green','black'))            oldX=selXoldY=selY            if __name__ == "__main__":main()exit()

python3-扫雷网页版相关推荐

  1. 收藏网页版小游戏:蜘蛛纸牌、扫雷、水果忍者、打地鼠、吃豆人

    学习之余当然是摸鱼了,这里分享几个不用下载直接在线玩耍的游戏.有蜘蛛纸牌网页版在线玩.在线扫雷小游戏.在线玩的水果忍者.吃豆人.打地鼠.3D模仿. 下面我将一个个列出来.欢迎体验收藏! 蜘蛛纸牌:这是 ...

  2. Python3.6-Flask:制作一个语音对话问答机器人系统(网页版)

    首先,本项目分为制作语音机器人后台部分和利用flask搭建网页部分. 制作语音机器人: 本系统的功能有:与图灵机器人进行对话:设置闹钟(计时器):播放本地音乐:机器写古诗: (1)与图灵机器人对话的部 ...

  3. python网页版_经典python学习教程:20行代码打造一个微信群聊助手,解放双手

    今天的Python学习教程教大家如何用20行Python代码实现微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的 ...

  4. 中国矿业大学python期末考试_中国矿业大学一体化网络校园网——CUMTDDNet-DrCOM网页版认证教程...

    本帖最后由 lazygoat644 于 2020-11-3 20:58 编辑 资料仅供参考学习,请勿用于非法用途或者盈利,违者责任自负! *****该教程作者为Lee.像风一样,首发于github() ...

  5. 非网页版微信机器人-Wechaty

    微信机器人有很多,比如之前的 itchat 是基于网页版实现的,然而现在微信网页版被封的厉害,许多账号都用不了了.找来找去发现 Wechaty 有基于 ipad 协议的实现,下面对其进行简单介绍. 本 ...

  6. 利用python实现微信自动回复群发等操作(不需要登录网页版微信)

    目前微信网页版限制登录,wxpy等模块操作微信的手段都无法使用了,前阵时间发现了WechatPCAPI这个模块,通过dll注入的手段实现操作微信,下面分享一下该模块的使用方法. 运行环境 Wechat ...

  7. 使用python uiautomation从钉钉网页版提取公司所有联系人信息

    之前写了一个提取QQ群里所有人信息的脚本 https://www.cnblogs.com/Yinkaisheng/p/5114932.html 今天写一个从钉钉网页版提取公司所有人通讯录的脚本,,本脚 ...

  8. python+selenium 爬取微博(网页版)并解决账号密码登录、短信验证

    使用python+selenium 爬取微博 前言 为什么爬网页版微博 为什么使用selenium 怎么模拟微博登录 一.事前准备 二.Selenium安装 关于selenium 安装步骤 三.sel ...

  9. 能做pc网页吗_梦幻西游网页版:如今还能抽金伙伴吗?玩家亲自验证,感觉还行...

    说起"金伙伴",相信各位玩家并不陌生.作为梦幻西游网页版中的强力助手,他们的各方面表现相当优秀,因此不少玩家都想抽到.然而,越珍贵的东西就越难抽出来,想要在荟英楼看到金伙伴,并不是 ...

  10. 如何打印网页版的发票_梦幻西游网页版:陷入瓶颈期,如何快速提升战力?氪金能解决问题...

    在梦幻西游网页版中,战力的高低直接影响着玩家的游戏体验,因此大家都将注意力放到了这上面.然而,提升战力并非易事,随着等级越来越高,难度也会逐渐提升.前不久,就有一位玩家遇到了麻烦,据他描述,目前的战力 ...

最新文章

  1. Android Vector笔记
  2. Tree 1.5 For Net 2.0
  3. prototype.js 让你更深入的了解javascript的面向对象特性
  4. 超适合小白的python新手教程
  5. 《机器学习实战》学习总结(三)朴素贝叶斯在文本分类的应用
  6. 计算机在思政专业的应用与探索,课程思政在计算机类课程中的探索与实践
  7. SSL自签名证书制作方法
  8. 量子电动力学和量子场论,多体系统的量子场论
  9. 2019年2月CNNIC第43次《中国互联网络发展状况统计报告》
  10. 丹佛机场行李系统处理方案
  11. 【程序员学理财】零和博弈和对股市的一些了解
  12. JavaScript打开窗口
  13. C语言10进制转2进制
  14. 微博php面试,新浪微博php实习生
  15. Linux互斥锁详细解读,看这一篇就够了
  16. 消息称聊天宝团队解散 罗永浩已经退出股东行列
  17. 【转】c# 图片压缩 (非图片大小变化)----使得显示效果差点,但是图片占用空间需要变小
  18. 数据结构—串的详细解释(含KMP算法)
  19. Easyui设置easyui-textbox不可编辑
  20. 为自己搭建一个分布式 IM 系统二【从查找算法聊起】

热门文章

  1. 游戏耳机什么牌子好?2022年高性价比蓝牙耳机推荐
  2. 行为心理学:如何识别微表情(转)
  3. 如何把Geohash的值解码成经度纬度?
  4. 陕西彬州一男子持刀杀害两名女性 警方发布协查通告
  5. python 遍历_python实现图广度优先遍历、深度优先遍历
  6. 记一次防范webshell实战
  7. 2023年第一批次申请考核制博士网上报名相关通知
  8. 裸辞,在某个程度上是在解救自己?
  9. AI工具合集!一共600+覆盖全行业,除了ChatGPT,那你也会喜欢这些其他的AI工具
  10. 手把手教你:基于Django的用户画像可视化系统