pygame库pgu使用示例代码

目录
  • 前言
  • 一、pgu是什么?
  • 二、使用步骤
    • 1.安装库
    • 2.制作按钮弹窗
    • 3.制作事件触发弹窗
    • 4.两种模式完整代码
  • 总结

前言

现在用pygame制作小游戏的人越来越多,但是pygame它是没有弹窗机制的
一般解决这个问题我们会使用tkinter库或者pgu库两种方式
其中pgu库还没有很适合新手的一个手册介绍,只有下载文件中的一些函数的例子与说明,因此本文主要介绍pgu由按钮与设定事件触发的两种方式
此外还解决了在pygame的窗口下弹窗的问题

一、pgu是什么?

pgu全称是Phil's pyGame Utilities,是pygame的一组模块与脚本,其中还有gui集成了一些小模块

下载地址

下载地址

pgu主页

二、使用步骤

1.安装库

window10下打开cmd输入pip install pygame-pgu即可
也可以用上面的地址直接下载包

2.制作按钮弹窗

代码如下(示例):
引入库

import pygame
import random
import pgu
from pgu import gui,timer

先用pygame生成一个500*500的窗口,pgu的例子里有许多弹窗,但是在pygame生成的窗口上弹窗的比较少

pygame.init()
screencaption = pygame.display.set_caption('chess')
screen = pygame.display.set_mode((500, 500))

构造一个自定义的弹窗(dialog)类

class TestDialog(gui.Dialog):
    def __init__(this):
        title = gui.Label("Some Dialog Box")                   #弹窗标题
        label = gui.Label("Close this window to resume.")      #弹窗内容
        gui.Dialog.__init__(this, title, label)

初始化,pgu最好生成一个容器来存放需要放的按钮等,最后记得init初始化

app = gui.App()                       #初始化gui
c = gui.Container(align=-1,valign=-1) #生成gui的容器
abc = TestDialog()                    #生成弹窗abc
btn = gui.Button("a")                 #生成文字为a的按钮
btn.connect(gui.CLICK, abc.open, None)#将按钮与弹窗的弹出绑定
c.add(btn,0,0)                        #将按钮安放在容器(0,0)位置
app.init(c)    

先用pygame生成一个500*500的窗口,再用导入pgu的弹窗元素

pygame.init()
screencaption = pygame.display.set_caption('chess')
screen = pygame.display.set_mode((500, 500))

主函数就是pygame的事件循环获取机制,但是需要注意的是用app.event函数将pygame的事件传达到pgu中,否则无法执行pgu的命令

while True:
    for e in pygame.event.get():
        if e.type is pygame.QUIT:
            pygame.quit()
        else:
            app.event(e)    #将pygame的事件传递给pgu,很重要
    screen.fill((0,0,0))    #生成一个屏幕
    app.paint()             #将pgu容器的内容画出来
    pygame.display.update()

3.制作事件触发弹窗

除了通过界面上的按钮触发事件,我们常常也需要采用发生了某个事件触发弹窗,这里设置了变量a,每按动一次按钮a增加1,直到a大于5时触发弹窗弹出事件
引入库

a = 0

将a的自增函数绑定到按钮上

def add(self):
    global a
    a = a + 1
btn.connect(gui.CLICK, add, None)#将按钮与弹窗的弹出绑定

加入判断状态函数,判断为True时弹出弹窗即可

 if a > 5:
        abc.open()
        a = 0

4.两种模式完整代码

按钮触发弹窗

import pygame
import random
import pgu
from pgu import gui,timer

class TestDialog(gui.Dialog):
    def __init__(this):
        title = gui.Label("Some Dialog Box")
        label = gui.Label("Close this window to resume.")
        gui.Dialog.__init__(this, title, label)

pygame.init()
screencaption = pygame.display.set_caption('chess')
screen = pygame.display.set_mode((500, 500))
app = gui.App()                       #初始化gui
c = gui.Container(align=-1,valign=-1) #生成gui的容器
abc = TestDialog()                    #生成弹窗abc
btn = gui.Button("a")                 #生成文字为a的按钮
btn.connect(gui.CLICK, abc.open, None)#将按钮与弹窗的弹出绑定
c.add(btn,0,0)                       #将按钮安放在容器(0,0)位置
app.init(c)                           

while True:
    for e in pygame.event.get():
        if e.type is pygame.QUIT:
            pygame.quit()
        else:
            app.event(e)    #将pygame的事件传递给pgu,很重要
    screen.fill((0,0,0))    #生成一个屏幕
    app.paint()             #将pgu容器的内容画出
    pygame.display.update()

事件触发弹窗代码

import pygame
import random
import pgu
from pgu import gui,timer

class TestDialog(gui.Dialog):
    def __init__(this):
        title = gui.Label("Some Dialog Box")
        label = gui.Label("Close this window to resume.")
        gui.Dialog.__init__(this, title, label)

pygame.init()
screencaption = pygame.display.set_caption('chess')
screen = pygame.display.set_mode((500, 500))
global a
a = 0
app = gui.App()                       #初始化gui
c = gui.Container(align=-1,valign=-1) #生成gui的容器
abc = TestDialog()                    #生成弹窗abc
btn = gui.Button("a")                 #生成文字为a的按钮
def add(self):
    global a
    a = a + 1
btn.connect(gui.CLICK, add, None)#将按钮与弹窗的弹出绑定
c.add(btn,0,0)                       #将按钮安放在容器(0,0)位置
app.init(c)                           

while True:
    for e in pygame.event.get():
        if e.type is pygame.QUIT:
            pygame.quit()
        else:
            app.event(e)    #将pygame的事件传递给pgu,很重要
    screen.fill((0,0,0))    #生成一个屏幕
    app.paint()             #将pgu容器的内容画出
    if a > 5:
        abc.open()
        a = 0
    pygame.display.update()

本人在尝试时发现:
1、如果没有screen.fill的函数弹出的窗口会无法关闭
2、如果没有app.event则pgu事件无法执行

总结

pgu的库网上内容较少,且较之tkinter运用在pygame上会更加稳定,但是pgu的硬伤是无法显示中文的界面,因此有这方面的需求最好还是使用tkinter

到此这篇关于pygame库pgu使用介绍的文章就介绍到这了,更多相关pygame库pgu使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygame写python小游戏并且只用了两三个小时,所以有些粗糙,部分方面有些bug,比如板子可以移动出屏幕外,游戏结束后的提示显示不全. 但是关键部分如小球的移动和基本功能等,还算比较完善. 代码如下: 运行环境为python 3.7,需要安装pygame库 import pygame,sys,time,

  • 详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件

    一.安装Pyinstaller 环境:python3.6.window10 注意事项: python64位版本打包的exe,只能在64位操作系统使用 打包文件夹和文件的名称不能用中文 pygame打包是里面的字体要改成"arial"格式. pygame.font.SysFont("宋体", 32) 32)  换成 pygame.font.SysFont('arial',32) 1.直接安装 pip命令安装:pip install Pyinstaller 安装成功后会

  • pygame库实现移动底座弹球小游戏

    本文实例为大家分享了pygame实现移动底座弹球的具体代码,供大家参考,具体内容如下 输出结果: 实现代码: # -*- coding: utf-8 -*- #Py之pygame:有趣好玩--利用pygame库实现一个移动底座弹球的小游戏 import pygame as pg from pygame.locals import * #将pygame所有常量导入,如后面的QUIT from time import sleep import sys #设置基本屏幕参数 pg.init() #初始化

  • pygame库实现俄罗斯方块小游戏

    本文实例为大家分享了pygame库实现俄罗斯方块小游戏的具体代码,供大家参考,具体内容如下 import random,time,pygame,sys from pygame.locals import *#导pygame内定义的一些常量 FPS=25#每秒传输帧数(刷新率),此处一秒内在屏幕上连续投射出24张静止画面 WINDOWWIDTH=640#窗口宽 WINDOWHEIGHT=480#窗口高 BOXSIZE=20#游戏框大小 BOARDWIDTH=10#游戏框宽度 BOARDHEIGHT

  • 使用Python第三方库pygame写个贪吃蛇小游戏

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame import random # 初始化 pygame.init() w = 720 #窗口宽度 h = 600 #窗口高度 ROW = 30 #行数 COL = 36 #列数 #将所有的坐标看作是一个个点,定义点类 class Point: row = 0 col = 0 def __init__(self

  • 使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件

    一.安装Pyinstaller 环境:python3.6.window10 注意事项: python64位版本打包的exe,只能在64位操作系统使用 打包文件夹和文件的名称不能用中文 pygame打包是里面的字体要改成"arial"格式. pygame.font.SysFont("宋体", 32) 32)  换成 pygame.font.SysFont('arial',32) 1.直接安装 pip命令安装:pip install Pyinstaller 安装成功后会

  • pygame库pgu使用示例代码

    目录 前言 一.pgu是什么? 二.使用步骤 1.安装库 2.制作按钮弹窗 3.制作事件触发弹窗 4.两种模式完整代码 总结 前言 现在用pygame制作小游戏的人越来越多,但是pygame它是没有弹窗机制的 一般解决这个问题我们会使用tkinter库或者pgu库两种方式 其中pgu库还没有很适合新手的一个手册介绍,只有下载文件中的一些函数的例子与说明,因此本文主要介绍pgu由按钮与设定事件触发的两种方式 此外还解决了在pygame的窗口下弹窗的问题 一.pgu是什么? pgu全称是Phil's

  • 利用Pygame绘制圆环的示例代码

    目录 三角函数 弧度和角度的关系 基本包和事件捕捉 主程序 全部代码 三角函数 如果我们以OP作为圆的半径r,以o点作为圆的圆心,圆上的点的x坐标就是r * cos a ,y坐标就是 r * sin a. python中提供math.cos() 和 math.sin(),要求参数为弧度. 弧度和角度的关系 PI代表180度,PI就是圆周率:3.1415926 535 897392 23846,python提供了角度和弧度的转化 math.degress() 弧度转角度 math.radiens(

  • python自动发邮件库yagmail的示例代码

    之前使用的python的smtplib.email模块发模块的一步步骤是: 一.先导入smtplib模块  导入MIMEText库用来做纯文本的邮件模板 二.发邮件几个相关的参数,每个邮箱的发件服务器不一样,以126为例子百度搜索服务器是  smtp.126.com 三.写邮件主题和正文,这里的正文是HTML格式的 四.最后调用SMTP发件服务 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text im

  • Pygame的程序开始示例代码

    程序开始 一.基本使用 1.创建一个游戏窗口出来 代码如下: # coding:utf8 import pygame import sys # 初始化pygame pygame.init() # 变量定义 size = width, height = 600, 400 bg = (255, 255, 255) # 创建一个游戏窗口 screen = pygame.display.set_mode(size) # 游戏标题 pygame.display.set_caption("游戏title&q

  • Pygame做一期吃豆子游戏的示例代码

    Pygame的历史 Pygame是一个利用SDL库的写就的游戏库,SDL呢,全名Simple DirectMedia Layer,是一位叫做Sam Lantinga的大牛写的,据说他为了让Loki(致力于向Linux上移植Windows的游戏的一家大好人公司,可惜已经倒闭,唉好人不长命啊--)更有效的工作,创造了这个东东. SDL是用C写的,不过它也可以使用C++进行开发,当然还有很多其它的语言,Pygame就是Python中使用它的一个库.Pygame已经存在很多时间了,许多优秀的程序员加入其

  • Python编程pygame模块实现移动的小车示例代码

    Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音.建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚. 最近一个星期学习了一下python的pygame模块,顺便做个小程序巩固所学的,运行效果如下: 其中,背景图"highway.jpg"是使用PhotoShop将其分辨率改变为640 × 480,而小车"car.png"则是将其转变为png格式的图片,并且填充其背景色,让其拥有透明性. 代码测试可用: # -*

  • windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码

    最近在上<自然语言处理>这门选修课,为了完成上机作业也是很认真了,这次是为了实现语角色标注任务,于是就入了这个坑,让我们来(快乐地 )解决出现的问题. 问题一:下载安装pyltp实现语义角色标注是在python3.6环境下实现的,(别问我怎么知道的,自己安装失败n次,问了室友才知道的 ),如果你的pycharm解释器安装的是3.7的该咋办呢? 答:再下载一个Python3.6在电脑的环境变量里把3.6的放到3.7的前面,这样就可以了,具体实施如下: 1.去Python官网下一个3.6版本的应用

  • php结合GD库简单实现验证码的示例代码

    前几日正好重温下GD库,来玩一下生成带有干扰素的验证码. 生成字母数字的图片验证码 首先需要看php.ini配置文件中有没有GD库,如果没有开启,请自行开启下,我用的小皮面板,基本现在都给你带上了. 需要生成4位(位数自定)验证码 //首先生成4位验证码 //开启session session_start(); //数组集合 $arr = array_merge(range(0,9),range('a','z'),range('A','Z')); //打乱数组 shuffle($arr); //

  • python pygame 愤怒的小鸟游戏示例代码

    小鸟(image) 游戏展示 代码展示 import pygame,sys pygame.init()#初始化操作 #保存窗口大小 width,height=600,400 screen=pygame.display.set_mode([width,height])#创建游戏窗口 #设置窗口标题 pygame.display.set_caption("愤怒的小鸟") #加载小鸟素材 player=pygame.image.load("xiaoniao.png") #

  • pygame用blit()实现动画效果的示例代码

    pygame的的实现动画的方法有很多,但是都是围绕着表面进行的,也就是说实现动画的方式不同,但是本质其实都是对表面的不同处理方式而已. 原理其实很简单,有点像我们做地铁的时候隧道里的广告一样.我们设置一个窗口.然后让窗口在一个画着很多帧图像的图上面移动,当我们透过这个窗口去观察这幅图的时候,只要窗口沿着一个方向去运动,那么就会产生动画效果. 今天我介绍的是通过块传输的方法去实现. surface.blit(image,(x,y),rect)  在这里surface.blit()这个方法应该大家都

随机推荐