Saya mencoba menunjukkan beberapa teks di sisi kanan dan beberapa teks di sisi kiri

inilah yang saya coba :-

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()

Tetapi tidak menyesuaikan lebar dan tinggi sesuai dengan teks, saya ingin jika teks kecil maka lebar dan tinggi tombol juga kecil, dan jika mungkin membuat tombol itu dibulatkan di sudut, tolong bantu saya ini

0
koushik 24 Mei 2021, 14:42

2 jawaban

Jawaban Terbaik

Anda dapat menyesuaikan ukuran Button (atau Label) dengan menggunakan texture_size. Kamu bisa memakai:

size_hint: None, None
size: self.texture_size

Untuk Button atau Label, tetapi itu membuat Button cukup besar untuk menampung text. Anda dapat menambahkan beberapa piksel untuk memberikan ruang kecil di sekitar teks seperti ini di kv:

<MyButt>:
    size_hint: None, None
    height: self.texture_size[1] + 10
    width: self.texture_size[0] + 10

Kemudian dalam kode python:

class MyButt(Button):
    pass

Jadi cukup muat string kv di atas dan ganti penggunaan Button dengan MyButt.

Anda bisa mendapatkan tombol bulat dengan menggunakan sesuatu seperti MDFillRoundFlatButton di KivyMD.

1
John Anderson 24 Mei 2021, 18:50

Oleh @John Anderson dan untuk menyesuaikan ketinggian GridLayout dari tombol yang saya gunakan height: self.minimum_height untuk menghindari tumpang tindih untuk tombol besar

0
koushik 25 Mei 2021, 16:54