最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pygame庫(kù)pgu使用示例代碼

 更新時(shí)間:2021年08月30日 15:31:57   作者:Huiuyao  
pgu全稱(chēng)是Phil’s pyGame Utilities,是pygame的一組模塊與腳本,其中還有g(shù)ui集成了一些小模塊,現(xiàn)在用pygame制作小游戲的人越來(lái)越多,但是pygame它是沒(méi)有彈窗機(jī)制的,今天通過(guò)本文給大家介紹pygame庫(kù)pgu使用示例代碼,需要的朋友參考下吧

前言

現(xiàn)在用pygame制作小游戲的人越來(lái)越多,但是pygame它是沒(méi)有彈窗機(jī)制的
一般解決這個(gè)問(wèn)題我們會(huì)使用tkinter庫(kù)或者pgu庫(kù)兩種方式
其中pgu庫(kù)還沒(méi)有很適合新手的一個(gè)手冊(cè)介紹,只有下載文件中的一些函數(shù)的例子與說(shuō)明,因此本文主要介紹pgu由按鈕與設(shè)定事件觸發(fā)的兩種方式
此外還解決了在pygame的窗口下彈窗的問(wèn)題

一、pgu是什么?

pgu全稱(chēng)是Phil's pyGame Utilities,是pygame的一組模塊與腳本,其中還有g(shù)ui集成了一些小模塊

下載地址

下載地址

pgu主頁(yè)

二、使用步驟

 1.安裝庫(kù)

window10下打開(kāi)cmd輸入pip install pygame-pgu即可
也可以用上面的地址直接下載包

2.制作按鈕彈窗

代碼如下(示例):
引入庫(kù)

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

先用pygame生成一個(gè)500*500的窗口,pgu的例子里有許多彈窗,但是在pygame生成的窗口上彈窗的比較少

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

構(gòu)造一個(gè)自定義的彈窗(dialog)類(lèi)

class TestDialog(gui.Dialog):
    def __init__(this):
        title = gui.Label("Some Dialog Box")                   #彈窗標(biāo)題
        label = gui.Label("Close this window to resume.")      #彈窗內(nèi)容
        gui.Dialog.__init__(this, title, label)

初始化,pgu最好生成一個(gè)容器來(lái)存放需要放的按鈕等,最后記得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生成一個(gè)500*500的窗口,再用導(dǎo)入pgu的彈窗元素

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

主函數(shù)就是pygame的事件循環(huán)獲取機(jī)制,但是需要注意的是用app.event函數(shù)將pygame的事件傳達(dá)到pgu中,否則無(wú)法執(zhí)行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))    #生成一個(gè)屏幕
    app.paint()             #將pgu容器的內(nèi)容畫(huà)出來(lái)
    pygame.display.update()

3.制作事件觸發(fā)彈窗

除了通過(guò)界面上的按鈕觸發(fā)事件,我們常常也需要采用發(fā)生了某個(gè)事件觸發(fā)彈窗,這里設(shè)置了變量a,每按動(dòng)一次按鈕a增加1,直到a大于5時(shí)觸發(fā)彈窗彈出事件
引入庫(kù)

a = 0

將a的自增函數(shù)綁定到按鈕上

def add(self):
    global a
    a = a + 1
btn.connect(gui.CLICK, add, None)#將按鈕與彈窗的彈出綁定

加入判斷狀態(tài)函數(shù),判斷為T(mén)rue時(shí)彈出彈窗即可

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

4.兩種模式完整代碼

按鈕觸發(fā)彈窗

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))    #生成一個(gè)屏幕
    app.paint()             #將pgu容器的內(nèi)容畫(huà)出
    pygame.display.update()

事件觸發(fā)彈窗代碼

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))    #生成一個(gè)屏幕
    app.paint()             #將pgu容器的內(nèi)容畫(huà)出
    if a > 5:
        abc.open()
        a = 0
    pygame.display.update()

本人在嘗試時(shí)發(fā)現(xiàn):
1、如果沒(méi)有screen.fill的函數(shù)彈出的窗口會(huì)無(wú)法關(guān)閉
2、如果沒(méi)有app.event則pgu事件無(wú)法執(zhí)行

總結(jié)

pgu的庫(kù)網(wǎng)上內(nèi)容較少,且較之tkinter運(yùn)用在pygame上會(huì)更加穩(wěn)定,但是pgu的硬傷是無(wú)法顯示中文的界面,因此有這方面的需求最好還是使用tkinter

到此這篇關(guān)于pygame庫(kù)pgu使用介紹的文章就介紹到這了,更多相關(guān)pygame庫(kù)pgu使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Python3中的多重繼承和混入類(lèi)

    詳解Python3中的多重繼承和混入類(lèi)

    Python原生支持多重繼承,這使得我們可以從多個(gè)父類(lèi)中繼承屬性和方法,在本文中,我們將介紹Python中多重繼承的概念,并討論在實(shí)際情況下可能遇到的坑,我們還將討論如何使用混入類(lèi)來(lái)避免這些問(wèn)題,需要的朋友可以參考下
    2023-05-05
  • Python3.9.1中使用match方法詳解

    Python3.9.1中使用match方法詳解

    這篇文章主要介紹了Python3.9.1中使用match方法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 詳解python 爬取12306驗(yàn)證碼

    詳解python 爬取12306驗(yàn)證碼

    這篇文章主要介紹了python爬取12306驗(yàn)證碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 使用Python腳本zabbix自定義key監(jiān)控oracle連接狀態(tài)

    使用Python腳本zabbix自定義key監(jiān)控oracle連接狀態(tài)

    這篇文章主要介紹了使用Python腳本zabbix自定義key監(jiān)控oracle連接狀態(tài),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python光學(xué)仿真PyQt5基礎(chǔ)框架教程

    python光學(xué)仿真PyQt5基礎(chǔ)框架教程

    這篇文章主要為大家介紹了python光學(xué)仿真之PyQt5基礎(chǔ)框架教程,文中含有詳細(xì)實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python中l(wèi)ru_cache的使用和實(shí)現(xiàn)詳解

    Python中l(wèi)ru_cache的使用和實(shí)現(xiàn)詳解

    這篇文章主要介紹了Python 中 lru_cache 的使用和實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python中map,reduce,filter和sorted函數(shù)的使用方法

    Python中map,reduce,filter和sorted函數(shù)的使用方法

    這篇文章主要介紹了Python中map,reduce,filter和sorted函數(shù)的使用方法,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • numpy下的flatten()函數(shù)用法詳解

    numpy下的flatten()函數(shù)用法詳解

    這篇文章主要介紹了numpy下的flatten()函數(shù)用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python正則表達(dá)式字符串的匹配、替換、分割、查找方式

    Python正則表達(dá)式字符串的匹配、替換、分割、查找方式

    這篇文章主要介紹了Python正則表達(dá)式字符串的匹配、替換、分割、查找方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • python 寫(xiě)一個(gè)文件分發(fā)小程序

    python 寫(xiě)一個(gè)文件分發(fā)小程序

    這篇文章主要介紹了python 寫(xiě)一個(gè)文件分發(fā)小程序,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12

最新評(píng)論

临安市| 黄梅县| 宿州市| 汾阳市| 乐清市| 咸宁市| 双流县| 六枝特区| 都江堰市| 汤阴县| 宜都市| 庆城县| 河北区| 昌平区| 法库县| 海门市| 东乡县| 马鞍山市| 西昌市| 萝北县| 巴彦县| 正安县| 和硕县| 类乌齐县| 西吉县| 竹溪县| 牟定县| 乌拉特中旗| 凤山市| 临泉县| 铜鼓县| 汤原县| 邳州市| 文成县| 黄浦区| 调兵山市| 汨罗市| 潼关县| 军事| 七台河市| 黎川县|