Настройка выравнивания флажка и метки в GridLayoutPython

Программы на Python
Ответить
Anonymous
 Настройка выравнивания флажка и метки в GridLayout

Сообщение Anonymous »

Я относительно новичок в Kivy, и у меня возникли проблемы с настройкой флажков и связанных с ними меток в GridLayout. Со ссылкой на изображение ниже...
Изображение

На снимке экрана выше показаны три виджета GridLayout, которые содержат флажки и метки, расположенные в 4 столбцах. Я хочу, чтобы столбцы с флажками были узкими, а столбцы с метками разделяли оставшееся пространство.
Мои вопросы:
  • Метки во втором столбце расположены довольно далеко по горизонтали от флажков, которые они описывают в первом столбце. Как сделать их ближе, как виджеты в столбцах 3 и 4?
  • Флажки не выровнены по вертикали с описывающими их метками. Как выровнять эти виджеты по вертикали?
ОБНОВЛЕНИЕ: у меня есть попробовал добавить атрибуты height (чтобы соответствовать флажкам), valign и padding (0,0,0,0) к меткам, но вертикальное выравнивание ни в малейшей степени не изменилось .
  • Мне нужно было немного места над заголовком каждого раздела, но я не был уверен, как это сделать, не выполняя кучу ручных вычислений и не экспериментируя с высотой каждого GridLayout. Итак, чтобы позволить Киви разобраться в этом, я добавил дополнительную строку с пустой меткой. Есть ли лучший способ сделать это?
  • Мне не ясно из онлайн-документации или демо-версии программы, как определить, какой из этих флажков (т. е. переключателей) был установлен, когда пользователь нажимает кнопку «Загрузить». Должен ли я выполнить поиск по идентификатору в приложении, чтобы найти каждый флажок по его идентификатору, а затем выяснить, какой из них имеет значение «Истина»? Или есть лучший способ?
Вот мой код на языке kivy:
:
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»