python - 根据 GridLayout 中的文本对齐:kivy
问题描述
我试图在右侧显示一些文本,在左侧显示一些文本
这是我尝试过的:-
from kivy.app import App,runTouchApp
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from io import BytesIO
from PIL import ImageOps, ImageDraw
from PIL import Image as img
from kivy.uix.image import Image, AsyncImage
from kivy.core.image import Image as CoreImage, Texture
from kivy.core.window import Window
from kivy.uix.label import Label
class m(App):
def build(self):
f=FloatLayout()
layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
# Make sure the height is such that there is something to scroll.
layout.bind(minimum_height=layout.setter('height'))
list=[('hhhhbjjggjgjgii',' '),(' ','hgghughuffooeoeo'),(' ','hgghughuffooeoeo'),(' ','hgghughuffooeoeo'),('hhhhbjjggjgjgii\nvhhge\nshh',' '),(' ','hgghughuf\nfooeoeo'),('hhhhbjjggjgjgii',' '),(' ','hgghughuffooeoeo'),('hhhhbjjggjgjgii',' '),(' ','hgghughuffooeoeo'),('hhhhbjj\nggjgjgii',' '),(' ','hgghughuf\nsjsjfooeoeo'),('hhhhbjjg\ngg\nfgg\ngg\ngjgjgii',' '),(' ','hgghughuffooeoeo'),('hhhhbjjggjgjgii',' '),(' ','ab'),('hhhhbjjggjgjgii',' '),(' ','hgghughuffooeoeo')]
for ifu in list:
g=GridLayout(cols=2,rows=1,size_hint_y=None,spacing=200)
if ifu[1]=='ab':
l=Label(text=' ')
g.add_widget(l)
t=Button(background_normal='person-light.png',background_down='person-light.png',size_hint=(1,1))
g.add_widget(t)
else:
if ifu[0]==' ':
l=Label(text=' ')
g.add_widget(l)
ime=Button(text='[color=ffffff]'+ifu[1]+'[/color]',markup=True,size_hint_y=None)
g.add_widget(ime)
else:
ime=Button(text='[color=ffffff]'+ifu[0]+'[/color]',markup=True,size_hint_y=None)
g.add_widget(ime)
l=Label(text=' ')
g.add_widget(l)
layout.add_widget(g)
root = ScrollView(size_hint=(1, None), size=(Window.width, Window.height-100))
root.add_widget(layout)
f.add_widget(root)
return f
m().run()
但它不是根据文本调整宽度和高度,如果文本很小,那么我希望它是这样的
解决方案
您可以通过使用它来调整 a Button
(或)的大小。您可以使用:Label
texture_size
size_hint: None, None
size: self.texture_size
对于 aButton
或Label
,但这会使Button
大到足以容纳text
。您可以添加一些像素以在文本周围提供一个小空间,如下所示kv
:
<MyButt>:
size_hint: None, None
height: self.texture_size[1] + 10
width: self.texture_size[0] + 10
然后在python代码中:
class MyButt(Button):
pass
因此,只需加载kv
上面的字符串并将使用替换Button
为MyButt
。
MDFillRoundFlatButton
您可以使用类似in的东西来获得圆形按钮KivyMD
。
推荐阅读
- php-7.2 - 静态类属性是一个数组,但抛出“参数必须是数组或实现可计数的对象”错误
- c# - INotifyPropertyChanged 未更新 DataTemplate、XAML、WPF 中的 UI
- amazon-web-services - Cloudformation 模板 Lambda 环境变量错误 - 属性变量的值必须是带有字符串的对象
- c - 在 c 的 not 运算符中找不到方法
- shopify - 是否可以向 shopify.com/login 提供“重定向 url”?
- asp.net - 将 ASP.NET 网站交叉编译到桌面?
- c++ - QDataWidgetMapper 将多列映射到单个自定义小部件的多个属性
- excel - 运行宏时Excel VBA屏幕闪烁问题
- node.js - 量角器网络驱动程序更新突然停止工作错误代码:135
- scala - 如何使用 Scala(SDET 自动化)测试 API?