哈里前段時間寫了一個windows平板上自娛自樂(春節和家人一起玩)基于pygame的大富翁游戲。
pygame沒有按鈕之類的UI控件,寫起來不怎么順手。就自己寫一個簡單的框架。
倉庫地址
哈里PygameUi: pygame ui封裝自用 (gitee.com)
使用示例
示例目錄
示例代碼(test_ui.py)
import pygame
import uidef 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 = FalserootPanel.In(pygame.mouse.get_pos(), event)screen.fill((64, 64, 64))rootPanel.Draw(screen)pygame.display.flip()
示意圖:
關于文檔
至于更多文檔……如果你需要可以評論留言,哈里會慢慢完善……
結語
唉,可惜pygame無法在安卓上運行……所以哈里暫時沒有繼續深入開發這個框架的動力……轉戰kivy~