【Python】PyGameUI控件

哈里前段时间写了一个windows平板上自娱自乐(春节和家人一起玩)基于pygame的大富翁游戏。

pygame没有按钮之类的UI控件,写起来不怎么顺手。就自己写一个简单的框架。

仓库地址

哈里PygameUi: pygame ui封装自用 (gitee.com)

使用示例

示例目录

示例代码(test_ui.py)

import pygame
import ui


def ClickBtn(btn):
  """按钮的回调函数"""
  print('btn=', btn, btn.text)


pygame.init()
screen = pygame.display.set_mode((800, 800))
# 写法1
rootPanel = ui.Panel(size=(400, 400))
text = ui.Text('你好 世界!hello world!', size=(400, 100), textSize=30)
rootPanel.AddChildNode('text', text)
btn1 = ui.Btn('点我1', pos=(110, 200), size=(100, 50), rot=45, imgGrid=[1, 1, 1, 1], textShadow=False, downFunc=ClickBtn)
rootPanel.AddChildNode('btn1', btn1)
btn2 = ui.Btn('点我2', pos=(10, 200), size=(100, 50), downFunc=ClickBtn)
rootPanel.AddChildNode('btn2', btn2)
# 写法2
# rootPanel = ui.Panel(
#   size=(400, 400),
#   childPanelDict={
#     'text@Text': {
#       'text': '你好 世界!hello world!',
#       'size': (400, 100),
#       'textSize': 30,
#     },
#     'btn1@Btn': {
#       'text': '点我1',
#       'imgGrid': [1, 1, 1, 1],
#       'pos': (110, 200),
#       'textShadow': False,
#       'size': (100, 50),
#       'rot': 45,
#       'downFunc': ClickBtn,
#     },
#     'btn2@Btn': {
#       'text': '点我2',
#       'pos': (10, 200),
#       'size': (100, 50),
#       'downFunc': ClickBtn,
#     },
#   }
# )
# 写法3;通过json构建UI,这里就不写了读取json和写法2类似的接口
running = True
while running:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      running = False
    rootPanel.In(pygame.mouse.get_pos(), event)
  screen.fill((64, 64, 64))
  rootPanel.Draw(screen)
  pygame.display.flip()

示意图:

关于文档

至于更多文档……如果你需要可以评论留言,哈里会慢慢完善……

结语

唉,可惜pygame无法在安卓上运行……所以哈里暂时没有继续深入开发这个框架的动力……转战kivy~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/417908.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat 软件和配置文件 基本介绍

一 ,web知识 简介 (一)web技术 1,http协议和 B/S (Browser/Server)结构 最早出现了CGl (Common Gateway Interface)通用网关接口,通过浏览器中输入URL直接映射到一个服务器端的脚本程序执行&…

从单体服务到微服务:多模式 Web 应用开发记录<三>预初始化属性

相关文章&#xff1a; 多模式 Web 应用开发记录<一>背景&全局变量优化多模式 Web 应用开发记录<二>自己动手写一个 Struts 开头先看一个简单的例子&#xff0c;这是 ftl 文件的一个表单&#xff1a; <form id"validateForm" action"#&quo…

【程序员是如何看待“祖传代码”的?】《代码的遗产:探索程序员眼中的“祖传代码”》

程序员是如何看待“祖传代码”的&#xff1f; 在程序员的世界里&#xff0c;代码不仅仅是构建软件的基石&#xff0c;它们也承载着历史、智慧和技术的演变。在我的编程生涯中&#xff0c;我遇到过许多神奇而独特的“祖传代码”&#xff0c;这些代码如同古老的魔法书&#xff0…

【C语言】三子棋

前言&#xff1a; 三子棋是一种民间传统游戏&#xff0c;又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战&#xff0c;双方依次在9宫格棋盘上摆放棋子&#xff0c;率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小&#xff0c;三子棋在很多时候会出现和…

C++面试常见八股分享

1.unordered_set和set&#xff0c;unordered_map和map的区别 set 和 map 是 C STL 中的两种关联容器&#xff0c;而 unordered_set 和 unordered_map 是 C11 新增的基于哈希表的关联容器。它们之间的主要区别在于底层的数据结构和操作复杂度。 set 和 unordered_set&#xff1…

黑马程序员——接口测试——day05——Request库、Cookie、Session、UnitTest框架

目录&#xff1a; Requests库 Requests库安装和简介设置http请求语法应用案例 案例1案例2案例3案例4Cookie Cookie简介CookieSession认证方式案例5-看演示&#xff0c;此代码不需实现Session Session简介Session自动管理Cookie案例6面试题Cookie和Session区别获取指定响应数据…

云原生架构技术揭秘:探索容器技术的奥秘

云原生的概念和演进都是围绕云计算的核心价值展开的&#xff0c;比如弹性、自动化、韧性&#xff0c;所以云原生所涵盖的技术领域非常丰富。 随着云计算技术的不断发展&#xff0c;云原生架构已经成为了新一代软件开发的重要趋势。本文将为您介绍云原生架构的相关技术&#xf…

单片机精进之路-9ds18b20温度传感器

ds18b20复位时序图&#xff0c;先将b20的数据引脚拉低至少480us&#xff0c;然后再将数据引脚拉高15-60us&#xff0c;再去将测传感器的数据引脚是不是变低电平并保持60-240us&#xff0c;如果是&#xff0c;则说明检测到温度传感器&#xff0c;并正常工作。需要在240us后才能检…

鸿蒙真有前景吗?是真是假?

直到“纯血鸿蒙”发布&#xff0c;才看清华为真正的布局&#xff0c;这一招实在是高明&#xff01; “纯血鸿蒙”发布之前&#xff0c;国内大批人唱衰华为&#xff0c;唱衰鸿蒙系统的生态&#xff0c;认为大概率会走诺基亚和微软的老路&#xff0c;没想到“纯血鸿蒙”一经推出…

高质 智能 绿色低碳棒线材轧制 智能测径仪等亦起关键作用

第十一届棒线材会议围绕推动轧钢装备数字化、智能化、绿色化转型升级&#xff0c;实现高质量发展&#xff0c;高质量、智能化、绿色低碳主题&#xff0c;将于4月22-24日在贵州省六盘水市召开。这也是轧钢生产近几年的发展趋势。 在线棒材生产中&#xff0c;蓝鹏测控可提供三种类…

每天十条linux知识点-24-0226(1)

文章目录 1.在哪下载linux内核源码&#xff1f;2.linux文件夹都有哪些文件&#xff1f;arch&#xff1a;包含和硬件体系结构相关的代码&#xff0c;每种平台占一个相应的目录&#xff0c;如i386、arm、arm64、powerpc、mips等。block&#xff1a;块设备驱动程序I/O调度。certs&…

又降价啦!2024年腾讯云服务器优惠价格表,不看后悔!

腾讯云服务器多少钱一年&#xff1f;62元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器218元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

高级语言期末2010级B卷(软件学院)

1.编写程序根据如下公式计算X的值&#xff08;精确到1e-5&#xff09;。 #include <stdio.h>int main(){int i1;double flag1.0/(2*i-1)*2.0*i/(2*i-1);double sum0;while(flag>1e-5){sumflag;i;flag1.0/(2*i-1)*2.0*i/(2*i-1);}printf("%lf",sum);return 0…

千兆单口(百兆双口)小体积 24PIN 网络变压器 H82409S 特点

Hqst华轩盛(石门盈盛)电子导读&#xff1a;千兆单口&#xff08;百兆双口&#xff09;小体积 24PIN 网络变压器 H82409S 特点 大家好&#xff0c;石门盈盛电子科技有限公司工程盛先生&#xff0c;今天向大家介绍石门盈盛电子科技有限公司的一款优势产品 - 千兆单口&#xff08;…

Docker(第四部分)

Docker微服务实战 通过IDEA新建一个普通微服务模块 把包放到linux机器里 pwd 通过dockerfile发布微服务部署到docker容器 dockerfile的内容 防火墙 Docker网络 网络主机 是什么&#xff1f; 网桥virbr0 常用基本命令 能干嘛 网络模式 最后都和u3一样了 结论&#xff1a;doc…

【Java程序设计】【C00329】基于Springboot的高校实习管理系统(有论文)

基于Springboot的高校实习管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校实习管理系统&#xff0c;本系统有管理员、公司、老师和学生四种角色&#xff1b; 管理员&#xff1a;个人中心、公司管理、…

故障排除:Failed to load SQL Modules into database Cluster

PostgreSQL 安装和故障排除 重新安装前的准备工作 在重新安装 PostgreSQL 之前&#xff0c;确保完成以下步骤&#xff1a; 重新卸载 PostgreSQL 并重启电脑。 删除以下目录&#xff1a; C:\Program Files\PostgreSQL\13C:\Users\admin\AppData\Roaming\pgadmin 重启安装过…

CentOS7——主机动态地址修改为静态地址

目录 1、查看本机的网络配置&#xff08;vmnet8网关&#xff09; 2、修改虚拟机主机网络信息配置文件 3、重启network服务使生效 4、测试 1、查看本机的网络配置&#xff08;vmnet8网关&#xff09; windows&#xff1a;“网络图标”——>“属性”——>“网络和共享中…

认识内部类

成员内部类 静态内部类 局部内部类 匿名内部类&#xff01;&#xff01;&#xff01;&#xff08;重点&#xff09; 匿名内部类在开发中常见的使用场景&#xff1a;通常作为一个参数传输给方法。

推荐系统经典模型YouTubeDNN代码

文章目录 前言数据预处理部分模型训练预测部分总结与问答 前言 上一篇讲到过YouTubeDNN论文部分内容&#xff0c;但是没有代码部分。最近网上教学视频里看到一段关于YouTubeDNN召回算法的代码&#xff0c;现在我分享一下给大家参考看一下&#xff0c;并附上一些我对代码的理解…