Cách ưa thích để kết hợp hình ảnh/biểu tượng và văn bản trong một nút là gì? Ví dụ: bạn sẽ tạo nút bằng text = 'my button'
và biểu tượng đồ họa ở bên trái văn bản đó như thế nào?Kết hợp hình ảnh và văn bản trong một nút trong kivy
6
A
Trả lời
10
Về câu hỏi # 2.
Cách Kivy hoạt động được nhúng Widget
trường hợp. Vì Image
và Button
là các lớp con của Widget, thì tất cả những gì bạn phải làm là nhúng một Hình ảnh bên trong Nút. Lưu ý rằng vị trí bên trong một widget được cố định. Bạn phải đưa ra các tọa độ rõ ràng.
Điều đó nói rằng, bạn luôn có thể nhúng Layout
để sắp xếp nội dung bạn đang đặt bên trong Nút.
Đây là đơn giản cũ
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: Một ví dụ về cách bố trí tương đối có thể được nhúng vào bên trong một nút
Trong trường hợp này tôi đang sử dụng một StackLayout
để tổ chức một Image
và a Label
bên trong. Như tôi đã nói, Button
là Widget
và Kivy hoạt động nhúng các tiện ích con bên trong tiện ích con. Nó không quan trọng nếu họ là nhãn, nút hoặc bố trí.
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()
Xin cảm ơn, tico. Tuy nhiên, việc gán vị trí của hình ảnh có liên quan đến bố mẹ dường như làm tăng vấn đề. Giả sử văn bản của nút của bạn được tạo động (nghĩa là độ dài biến đổi) và bạn muốn hình ảnh luôn xuất hiện chiều rộng 10 pixel ở bên trái văn bản - để xác định vị trí hình ảnh, bạn có phải viết một hàm mất như đầu vào số lượng ký tự trong văn bản của nút, và xác định giá trị x cho phù hợp? –
Trong trường hợp đó bạn thêm một 'Nhãn' và' Hình ảnh' vào một 'Sơ đồ' khác. Tôi sẽ nói một 'BoxLayout' và' orientation: horizontal'. Tôi đoán nó dễ dàng hơn để cung cấp cho bạn một ví dụ khác. –