使用pysdl2创建简单ui的python库
pysdl2-sdl2ui的Python项目详细描述
pysdl2-sdl2ui
====br/>
>一个使用pysdl2制作简单用户界面的库。
>简介
``python
```python
my app类(sdl2ui.app):
width=256
height=224
zoom=3
;注意:你想要的fps:更少的fps:更少的fps=更少的cpu使用
name=“我的应用程序”
br/>#注意:按您希望首先显示的顺序排列处理程序
默认的处理程序=[mainhandler,listselectorhandler,menuhandler]
默认的处理程序资源=[('background','background.png')]
myapp.run(handlers=[sdl2ui.handler.debuggerhandler])
````
三种主要方法:`init()`,`peek()`和`draw()`:
*`init()`在应用程序启动(实例化)时立即调用。您可以在这里设置实例中的所有类型的变量,然后再显示任何内容。
*`peek()`在每一帧调用。可以在此处捕获输入。
如果peek()返回true,则sdl2ui将重新绘制整个屏幕(使用所有
活动处理程序)。每次应用程序需要重新绘制屏幕时都会调用
*`render()。
self.app.keys[sdl2.sdl_scancode_d]:
self.app.keys[sdl2.sdl_scancode_d]=false
注意:切换调试器模式
self.app.handler s[sdl2ui.handler.debuggerhandler].toggle()
elif self.app.keys[sdl2.sdl_scancode_s]:
self.app.keys[sdl2.sdl_scancode_s]=false
#注意:切换菜单和列表选择器的显示
self.app.handlers[listselectorhandler].toggle()
self.app.handlers[menuhandler].toggle()
elif self.app.keys[sdl2.sdl扫描代码u q]:
self.app.keys[sdl2.sdl扫描代码u q]=false
self.app.quit=true
否则:
return false
return true
def render(self):
self.app.draw('background',x=0,y=0)
`````
``python
``class menuhandler(sdl2ui.handler):
highlight=(0x 0 0,0x00,0xFF,0xFF)
行空间=8
默认活动=false
菜单操作=[
(“保存”,lambda x:x.save()),
(“加载”,lambda x:x.load()),
(“退出”,lambda x:x.quit()),
]
def init(self):
self.select=0
todo save()
pass
def load(self):
todo load()
pass
self.app.quit=true
def peek(self):
self.app.keys[sdl2.sdl_scancode_up]:
self.app.keys[sdl2.sdl_scancode_up]=false
self.select-=1
如果self.select<;0:
self.select=len(self.menu_actions)-1
elif self.app.keys[sdl2.sdl_scancode_down]:
self.app.keys[sdl2.sdl_scancode_down]=false
self.select+=1
如果self.select>;=len(self.菜单操作):
self.select=0
elif self.app.keys[sdl2.sdl_scancode_return]:
self.app.keys[sdl2.sdl_scancode_return]=false
func=self.menu操作[self.select]
func()
否则:
返回false
返回true
def render(self):
border=10
x,y=border,border
对于i,(label,u)in enumerate(self.menu操作):
如果i==self,则选择:
注意:您可以使用带有self.app.tint(self.highlight):
self.app.write('Font-6',x,y,label)
其他:
注意:字体-6是一个内置库的位图字体
self.app.write('FONT-6',x,y,label)
y+=self.line\u space
```
====br/>
>一个使用pysdl2制作简单用户界面的库。
>简介
``python
```python
my app类(sdl2ui.app):
width=256
height=224
zoom=3
;注意:你想要的fps:更少的fps:更少的fps=更少的cpu使用
name=“我的应用程序”
br/>#注意:按您希望首先显示的顺序排列处理程序
默认的处理程序=[mainhandler,listselectorhandler,menuhandler]
默认的处理程序资源=[('background','background.png')]
````
三种主要方法:`init()`,`peek()`和`draw()`:
*`init()`在应用程序启动(实例化)时立即调用。您可以在这里设置实例中的所有类型的变量,然后再显示任何内容。
*`peek()`在每一帧调用。可以在此处捕获输入。
如果peek()返回true,则sdl2ui将重新绘制整个屏幕(使用所有
活动处理程序)。每次应用程序需要重新绘制屏幕时都会调用
*`render()。
self.app.keys[sdl2.sdl_scancode_d]:
self.app.keys[sdl2.sdl_scancode_d]=false
注意:切换调试器模式
self.app.handler s[sdl2ui.handler.debuggerhandler].toggle()
elif self.app.keys[sdl2.sdl_scancode_s]:
self.app.keys[sdl2.sdl_scancode_s]=false
#注意:切换菜单和列表选择器的显示
self.app.handlers[listselectorhandler].toggle()
self.app.handlers[menuhandler].toggle()
elif self.app.keys[sdl2.sdl扫描代码u q]:
self.app.keys[sdl2.sdl扫描代码u q]=false
self.app.quit=true
否则:
return false
return true
def render(self):
self.app.draw('background',x=0,y=0)
`````
``python
``class menuhandler(sdl2ui.handler):
highlight=(0x 0 0,0x00,0xFF,0xFF)
行空间=8
默认活动=false
菜单操作=[
(“保存”,lambda x:x.save()),
(“加载”,lambda x:x.load()),
(“退出”,lambda x:x.quit()),
]
def init(self):
self.select=0
pass
def load(self):
todo load()
pass
def peek(self):
self.app.keys[sdl2.sdl_scancode_up]:
self.app.keys[sdl2.sdl_scancode_up]=false
self.select-=1
如果self.select<;0:
self.select=len(self.menu_actions)-1
elif self.app.keys[sdl2.sdl_scancode_down]:
self.app.keys[sdl2.sdl_scancode_down]=false
self.select+=1
如果self.select>;=len(self.菜单操作):
self.select=0
elif self.app.keys[sdl2.sdl_scancode_return]:
self.app.keys[sdl2.sdl_scancode_return]=false
func=self.menu操作[self.select]
func()
否则:
返回false
返回true
def render(self):
border=10
x,y=border,border
对于i,(label,u)in enumerate(self.menu操作):
如果i==self,则选择:
注意:您可以使用带有self.app.tint(self.highlight):
self.app.write('Font-6',x,y,label)
其他:
注意:字体-6是一个内置库的位图字体
self.app.write('FONT-6',x,y,label)
y+=self.line\u space
```