Jaki jest preferowany sposób łączenia obrazu/ikony z tekstem w przycisku? Na przykład, w jaki sposób utworzysz przycisk z numerem text = 'my button'
i ikoną graficzną po lewej stronie tego tekstu?Łączenie obrazu i tekstu za pomocą przycisku w kivy
6
A
Odpowiedz
10
Odnośnie do pytania nr 2.
Sposób działania Kivy polega na osadzeniu instancji Widget
. Ponieważ Image
i Button
są podklasami Widget, wszystko co musisz zrobić, to osadzić obraz wewnątrz przycisku. Zauważ, że pozycjonowanie wewnątrz widgetu zostało naprawione. Musisz podać wyraźne współrzędne.
To powiedziawszy, zawsze można osadzić kod Layout
, aby uporządkować elementy, które wkładasz do przycisku.
Oto prostego ex
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_string("""
<ButtonsApp>:
orientation: "vertical"
Button:
text: "B1"
Image:
source: 'kivy.png'
y: self.parent.y + self.parent.height - 200
x: self.parent.x
Label:
text: "A label"
""")
class ButtonsApp(App, BoxLayout):
def build(self):
return self
if __name__ == "__main__":
ButtonsApp().run()
EDIT: Przykład jak względny układ może być osadzony wewnątrz przycisku
W tym przypadku używam StackLayout
zorganizować Image
i Label
w środku. Jak już wspomniałem, Button
to Widget
, a Kivy obsługuje widżety osadzania wewnątrz widżetów. Nie ma znaczenia, czy są to etykiety, przyciski czy układy.
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_string("""
<ButtonsApp>:
orientation: "vertical"
Button:
StackLayout:
pos: self.parent.pos
size: self.parent.size
orientation: 'lr-tb'
Image:
source: 'kivy.png'
size_hint_x: None
width: 74
Label:
size_hint_x: None
width: 100
text: "The text"
Label:
text: "A label"
""")
class ButtonsApp(App, BoxLayout):
def build(self):
return self
if __name__ == "__main__":
ButtonsApp().run()
Powiązane problemy
- 1. Problem wyrównania tekstu przycisku Kivy
- 2. umieszczanie scenariusza tekstu poniżej obrazu wewnątrz przycisku
- 3. Ustawianie tekstu przycisku za pomocą javascript
- 4. Android: Udostępnianie tekstu i obrazu (URL) za pomocą intencji
- 5. Rozwidlenie i łączenie za pomocą Akka
- 6. Animowanie tekstu za pomocą TextSwitcher W Androidzie
- 7. Łączenie tekstu i HTML przez nokaut
- 8. Jak ustawić wybrany stan przycisku obrazu za pomocą xml
- 9. Rysowanie tekstu za pomocą zewnętrznego obrysu przy użyciu obrazu HTML5
- 10. Jak zmienić tekst etykiety w języku kivy za pomocą pythona
- 11. Erozja obrazu i rozszerzenie za pomocą Scipy
- 12. Zapisywanie obrazu za pomocą Mechanize i Nokogiri?
- 13. Wyrównywanie tekstu za pomocą ContentControl za pomocą właściwości HorizontalContentAlignment
- 14. Przełączanie FadeIn/FadeOut za pomocą jednego przycisku
- 15. Nie można zmienić tekstu przycisku w HTML i JavaScript
- 16. za pomocą "onclick" za pomocą przycisku radiowego w aplikacji
- 17. Jak za każdym razem obracać obraz w widoku obrazu za pomocą przycisku?
- 18. za pomocą przycisku {} po średnikiem
- 19. Jak zrobić aplikację GPS dla Androida za pomocą kivy, pyjnius?
- 20. skalowanie przycisku scene2d za pomocą libgdx
- 21. Ukrywanie przycisku za pomocą jquery
- 22. Usuwanie znaków za pomocą przycisku
- 23. Tekst przycisku motywu za pomocą kształtu kątowego
- 24. Rozpocznij i zatrzymaj nagrywanie za pomocą przycisku w powiadomieniu
- 25. Nawigacja za pomocą przycisku w sencha touch
- 26. Uruchamianie kreatora za pomocą przycisku w OpenERP
- 27. Włączanie i wyłączanie przycisku za pomocą javascript i asp.net
- 28. Wyrównanie tekstu na przycisku
- 29. Wyśrodkowywanie obrazu i tekstu w R Markdown dla raportu PDF
- 30. Bootstrap: wyrównanie tekstu przycisku w lewo
Dzięki, tico. Jednak przypisanie pozycji obrazu względem rodzica wydaje się rodzić problem. Powiedzmy, że tekst twojego przycisku jest generowany dynamicznie (tzn. O zmiennej długości) i chcesz, aby obraz zawsze pojawiał się na szerokość 10 pikseli po lewej stronie tekstu - aby określić położenie obrazu, czy musisz napisać funkcję, która przyjmuje jako dane wejściowe liczbę znaków w tekście przycisku i określa odpowiednio wartość x? –
W takim przypadku należy dodać 'Etykieta' i' Obraz' w innym "Układzie". Powiedziałbym "BoxLayout" i "orientation: horizontal". Myślę, że łatwiej jest podać inny przykład. –