
На снимке экрана выше показаны три виджета GridLayout, которые содержат флажки и метки, расположенные в 4 столбцах. Я хочу, чтобы столбцы с флажками были узкими, а столбцы с метками разделяли оставшееся пространство.
Мои вопросы:
- Метки во втором столбце расположены довольно далеко по горизонтали от флажков, которые они описывают в первом столбце. Как сделать их ближе, как виджеты в столбцах 3 и 4?
- Флажки не выровнены по вертикали с описывающими их метками. Как выровнять эти виджеты по вертикали?
- Мне нужно было немного места над заголовком каждого раздела, но я не был уверен, как это сделать, не выполняя кучу ручных вычислений и не экспериментируя с высотой каждого GridLayout. Итак, чтобы позволить Киви разобраться в этом, я добавил дополнительную строку с пустой меткой. Есть ли лучший способ сделать это?
- Мне не ясно из онлайн-документации или демо-версии программы, как определить, какой из этих флажков (т. е. переключателей) был установлен, когда пользователь нажимает кнопку «Загрузить». Должен ли я выполнить поиск по идентификатору в приложении, чтобы найти каждый флажок по его идентификатору, а затем выяснить, какой из них имеет значение «Истина»? Или есть лучший способ?
:
BoxLayout:
orientation: "vertical"
size: root.size
pos: root.pos
Label:
text: 'Which type of data are you importing?'
markup: 'True'
text_size: self.width, None
size: self.texture_size
halign: 'left'
Label:
text: 'Customer-related items'
markup: 'True'
text_size: self.width, None
size: self.texture_size
halign: 'left'
GridLayout:
cols: 4
spacing: '8dp'
size_hint_y: None
CheckBox:
id: chkBoxCustomerAddresses
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Addresses'
text_size: self.width, None
halign: 'left'
CheckBox:
id: chkBoxCustomerMessaging
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Electronic Messaging'
text_size: self.width, None
halign: 'left'
CheckBox:
id: chkBoxCustomerCommunications
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Communications'
text_size: self.width, None
CheckBox:
id: chkBoxCustomerTransactions
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Transactions'
text_size: self.width, None
Label:
text: ' '
text_size: self.width, None
Label:
text: 'Supplier-related items'
markup: 'True'
text_size: self.width, None
size: self.texture_size
halign: 'left'
GridLayout:
cols: 4
spacing: '8dp'
size_hint_y: None
CheckBox:
id: chkBoxSupplierAddresses
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Addresses'
text_size: self.width, None
halign: 'left'
CheckBox:
id: chkBoxSupplierMessaging
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Electronic Messaging'
text_size: self.width, None
halign: 'left'
CheckBox:
id: chkBoxSupplierCommunications
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Communications'
text_size: self.width, None
CheckBox:
id: chkBoxSupplierTransactions
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Transactions'
text_size: self.width, None
Label:
text: ' '
text_size: self.width, None
Label:
text: 'Employee-related items'
markup: 'True'
text_size: self.width, None
size: self.texture_size
halign: 'left'
GridLayout:
cols: 4
spacing: '8dp'
size_hint_y: None
CheckBox:
id: chkBoxEmployeeAddresses
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Addresses'
text_size: self.width, None
halign: 'left'
CheckBox:
id: chkBoxEmployeeMessaging
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Electronic Messaging'
text_size: self.width, None
halign: 'left'
CheckBox:
id: chkBoxEmployeeCommunications
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Communications'
text_size: self.width, None
CheckBox:
id: chkBoxEmployeeTransactions
size_hint_y: None
size_hint_x: None
height: '14dp'
width: '30dp'
group: 'importTypes'
Label:
text: 'Transactions'
text_size: self.width, None
Label:
text: ' '
text_size: self.width, None
BoxLayout:
orientation: "horizontal"
size_hint_y: None
height: 30
Button:
text: "Cancel"
on_release: root.cancel()
Button:
text: "Load"
on_release: app.ImportFile(filechooser.path, filechooser.selection)
Подробнее здесь: https://stackoverflow.com/questions/790 ... gridlayout
Мобильная версия