2013-09-24 58 views

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ì ImageButton 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, ButtonWidget 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() 
+0

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? –

+0

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. –