pygame中易于使用的小部件

graphalama的Python项目详细描述


#graphalama

_或者"用户如何输入他们的姓名?"_.

这个库的目标是回答所有这些问题,并提供最简单的界面来创建、更新、控制和操作我们称之为小部件的东西。(按钮、文本框、滑块、开关……)

使用pip install graphalama
```
pip install graphalama
````
````
git clone https://gitlab.com/lama corp/graphalama
cd graphalama
python setup.py install-u
```

像这样,

`` python
导入pygame
pygame.init()

变量、对象的设置…
stop=false
screen=pygame.display.get((400,400))

按钮…
控制按键移动玩家,输入文本…
这是游戏的逻辑,取决于输入


任何在每一帧中改变自己的东西,最后你用一些或多或少先进的技术渲染所有东西。255))
pygame.display.update()
```

一些小部件可以有一个内部逻辑,如时钟或计时器,但我们稍后会回来。

一个大的绿色播放按钮。我们将每个步骤减少到最小。

-创建:
`play_button=button("播放",bg_color=green,函数=play)`
-输入处理(单击):
`play_button.update(event)`
-呈现:`play_button.render(screen)`

=pygame.display.set_mode((800,500))




为真时:
对于pygame.event.get():
如果event.type==pygame.quit:
quit()
输入时文本不会更改,因此我们不需要更新它

屏幕。填充((255,255,255))
您好文本。呈现(屏幕)
pygame.display.flip()
`````

它为我们的应用程序提供了很好的深度,并突出了我们的小部件
-a**shape**:定义了背景的形状。它还定义了边框、大小以及单击/选择小部件的位置。列出一些常见的:矩形、圆形、圆形……
-a**内容**:小部件的信息,它可以是小部件自己的内容,也可以是小部件的子小部件(您知道我们可以将任何小部件放在按钮中吗?)

这三个层混合在一起创建小部件。为了定制我们的小部件,我们可以很容易地改变这三层中的一层。让我们来看看不属于阴影、形状或内容的常见参数。y)`being the`x`-st pixel on`y`-st line of the screen.
每当我们需要一个位置作为函数的参数时,它将是一个整数的元组`(x,y)`小部件的位置由两个元素定义:其坐标"pos"和"anchor"。"锚定"定义小部件的锚定位置,
也就是说,调整窗口大小时小部件将停留在何处,以及它将首先放在屏幕上的何处。

例如,如果锚定位于"左上角",小部件将始终停留在屏幕顶部和左侧的相同距离,无论窗口大小如何调整。
其"pos"将是小部件的左上角。这是默认的锚定,因此我们可以像在大多数框架中那样放置小部件。

我们只需要将锚定设置为"right"
,即使调整窗口大小,我们的小部件也将保持距离右边框5像素的位置。这里的"pos"将是小部件右侧
的中间点。这里有一张小图来解释:

![(assets/right_anchor.png)

它始终保持距离右边缘30px。

最后,有四件事需要记住:
-我们可以通过将锚定设置为"right"、"left"、"top"和"bottom"将小部件锚定到窗口的一个或多个边。
这些常量在"graphalama.constants"中定义。
-我们可以将锚与管道符号` `结合起来,因此我们使用`anchor=top right`
将小部件锚定到右上角-不仅可以控制位置,还可以使用锚控制大小。如果"anchor=left right",则小部件到两侧的距离将保持不变。因此,如果窗口变大,则宽度将拉伸;如果窗口变小,则宽度将收缩。
-小部件的"pos"始终反映锚:如果锚是"bottom right",则"pos"将是小部件的右下角。
如果锚是"left",则"pos"将是小部件的左中角。但是,我们总是可以使用"widget.toplett"来获得小部件的左上角。
"widget.x"和"widget.y"也可以工作。

这是非常技术性的部分的全部内容,但是一旦我们习惯了它,它就会变得非常直观,并节省了很多时间。

为小部件着色的选项范围。没有透明的普通单色部件!

小部件通常有三种颜色:
-`color`,前景色,即按钮文本
-`bg`color`,背景色,即形状的填充方式
-`border`color`,边框颜色


这三种颜色接受不同的类型,您可以随时传递其中任何一个:
-0到255之间的rgb或rgb a整数元组,您可以在"graphalama.constants"中找到许多预定义的颜色
-从一种颜色到另一种颜色的"gradient"(两者都可以是rgb或rgb a)
-使用"multigradient"可以使用多色渐变
-使用"imagebrush"绘制图像
-使用"imagelistbush"绘制多个图像并交换他们之间。

![不同颜色和透明度的示例](assets/color_example.png)
您可以获取此示例的代码[此处](assets/color_example.py)。


这是一个带有"paint"方法的对象,它接受一个"surface"并将其着色。

#####r g b或rgb a元组像`(r,g,b)`或`(r,g,b,a)`这样的元组都是有效的颜色,其中'0<;=r,g,b,a<;=255`.
它们会自动转换为'color'对象,以便于使用。正如预期的那样,它们用相同的颜色填充整个区域。


a`gradient(start,end,horizontal)`将用两种颜色之间的线性插值填充形状。
`start`和`end`必须是两个元组,如果`horizontal==false`,渐变将垂直绘制,
因此"开始"将位于形状的顶部,而"结束"将位于底部。


horizontal=true)`类似于一个`渐变',但有两种以上的颜色。


颜色点是。在这里,橙红色部分
将占据渐变的左半部分,而蓝黄色和黄橙色部分
只占四分之一。位置在0到
```
多重渐变(蓝色、黄色、橙色、红色,位置=(0,1/4,1/2,1))
````
当然,位置的数目必须与颜色的数目相匹配,但位置必须从0开始,从1结束。例如,如果位置是`(1/2,2/3,1)`,则曲面的前半部分正好是第一种颜色。

如果"horizontal==false",然后从上到下而不是从左到右绘制渐变。



[](assets/shape_simplest.png)


,但您不仅限于矩形,您还可以有一个圆形矩形、一个圆形
,甚至可以有任何参数化形状或任何自定义形状(稍后我们将回来创建您的自定义形状)

![](assets/shapes_examples.png)

将垂直堆叠在屏幕中心。
然后,我们可以为小部件提供任何形状。每个小部件都可以有任何形状,我们只需要在对象初始化中将其作为"shape"参数传递即可。
形状位于"graphalama.shapes"中,它们都接受相同的参数:
-首先是小部件的"size",如果没有指定,则小部件将只适合其内容
-然后是特定形状的参数,即矩形的舍入,参数曲线的方程…
-接下来是"边框",它指定小部件边框的宽度
-最后是"最小大小"和"最大大小",这是小部件在调整窗口大小时可以使用的最小和最大大小

最后,shape对象是有关大小、边框和大小的所有信息的容器,形状。
如果要在运行时更改小部件的大小,需要设置"widget.shape.size"、"widget.shape.height"或"widget.shape.width"。

>;因此,一个形状只能设置为一个小部件。小部件不能共享对同一形状的引用。


通过在窗口小部件和背景之间创建更深的对比度。
阴影在"graphalama.shadows"中很受欢迎,而且它们是可选的:您可以将"noshadow"传递给任何窗口小部件,并且……
它不会显示或计算任何阴影。否则,阴影接受4个可选参数。下面是签名

``python
shadow(dx=2,dy=2,blur=2,strength=100)
```

ET和阴影,
它们分别将阴影的"dx"和"dy"向右和向下移动。

然后将高斯模糊si应用于形状。请注意,这需要枕头。
如果您没有安装枕头,它不会模糊阴影,不会引起任何异常。


强度是介于"0"和"255"之间的整数,这取决于阴影有多暗。

这些小部件是

`` python
wid=widgetlist([
按钮("随机阴影",更改阴影,(400,250),roundedrect((400,250),50,1,2),
bg颜色=(150,232,230),border颜色=尼斯蓝色,shadow=noshadow(),anchor=allanchor),
小部件((55,35),roundedrect(),bg_color=monokai.pink,anchor=top),
窗口小部件((150,35),roundedrect(),bg_color=monokai.blue,shadow=shadow(5,5,0),anchor=top),
窗口小部件((245,35),roundedrect(),bg_color=monokai.orange,shadow=shadow(-5,5,10,200),anchor=top),
窗口小部件((340,35),roundedrect(),bg廑color=monokai.green,shadow=shadow(5,5,5),anchor=top),
窗口小部件((435,35),roundedrect(),bg廑color=monokai.yellow,shadow=shadow(0,0,10),anchor=top),
窗口小部件((530,35),roundedrect(),bg廑color=monokai.purple,shadow=shadow(5,5,0,200),anchor=top),
窗口小部件((625,35),roundedrect(),bg_color=monokai.brown,shadow=shadow(-2,-2,5),anchor=top),
小部件((720,35),roundedrect(),bg_color=monokai.black,shadow=shadow(5,20,5),anchor=top),
simpleText("阴影(dx,dy,blur,strength)",(400,490),anchor=bottom)
])
``````

![](assets/shadow嫒example.png)


so I wont comment on the current system.

## Widgets

### Button

### SimpleText

## Tips

### The `Pos` class

## Creating your own stuff

### Widgets

###




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在通配符泛型类型和泛型类型之间未经检查的强制转换   java Eclipse SWT Hello world教程:无法将显示解析为类型   java如何向远程用户发送注销消息?   java RDD之后的空文件是什么。保存ASTEXTFILE?   用户界面在java中创建一个htmljs UI GCalendar   Java多个哈希映射指向同一个键   Java Dowhile循环不工作?   oraclejava类。组织。阿帕奇。梁sdk。util。UserCodeException:java。sql。SQLException:无法创建PoolableConnectionFactory   java是org类型。日食用户界面。文本编辑器。*看不见   java有没有从弹出窗口复制eclipse中变量值的插件或快捷方式?   java getSubimage为我提供了期望值null   java我想让它变得更简单   swing AWTEventQueue0一直在运行,java中的程序变得非常慢   java Solr实例化类时出错:自定义类   java将ListView适配器移植到RecyclerView适配器   c#测试混合web和桌面应用程序的安全性