В настоящее время мы работаем в группе над проектом python - kivy, где мы разрабатываем приложение, которое мы стремимся опубликовать sh для iOS - с использованием XCode. Проблема, с которой мы сталкиваемся на данный момент, заключается в том, что GUI, который мы создали с помощью kivy, масштабирует и позиционирует объекты по-разному на наших устройствах. Мы используем Windows и macOS в нашей группе (обе используют одну и ту же Python версию 3.7.5 и kivy 1.11.1). Странная вещь здесь в том, что даже между двумя нашими macOS-устройствами некоторые виджеты, например TextInput, Spinner images, масштабируются по-разному.
«Плохие» виджеты, на которые влияют, не пишутся так же, как виджеты, у которых, похоже, нет проблем. Особенно размер Kivy Popups очень грязный. На одном Macbook он занимает примерно половину экрана, а на другом MacBook - весь экран, что делает невозможным закрытие Popup, что приводит к сбоям в работе приложения.
Таким образом, это практически невозможно работать над таким проектом в группе, когда в основном только один человек может завершить sh все корректировки. Есть ли какие-либо решения или предложения о том, как подойти к этому вопросу? Мы уже включили параметр Window.size и отключили возможность изменять размер окна предварительного просмотра, чтобы иметь одинаковое разрешение на всех устройствах. Это пример одного из файлов .kv, где пользовательские изображения для прядильщиков масштабируются по-разному, а текстовые строки располагаются совершенно по-разному на всех наших устройствах. Для примера я удалил все функции (on_release, ids et c.), Так как они не должны влиять на форматирование. Создание экрана (сверху вниз): 2 счетчика, 1 ввод текста, 3 кнопки, панель навигации вкл. 2 кнопки.
<EditLocation>:
FloatLayout:
#Background color
canvas:
Rectangle:
size: self.size
pos: self.pos
source: "graphics/background/background_main.png"
#Display of ID and input fields
GridLayout:
cols: 1
size_hint: 1, .25
pos_hint: {"top": 1, "right": 1}
GridLayout:
cols: 2
SpinnerWidget:
text: "Select Country"
background_normal: 'graphics/buttons/dropdown_country.png'
background_down: 'graphics/buttons/dropdown_country_pressed.png'
SpinnerWidget:
text: "Select City"
background_normal: 'graphics/buttons/dropdown_city.png'
background_down: 'graphics/buttons/dropdown_city_pressed.png'
Label:
text: "Location"
TextInput:
hint_text: "Name of Location"
multiline: False
canvas.before:
Color:
rgba: 1, 1, 1, 1
Line:
points: self.x + 5, self.y +30, self.x + self.width, self.y +30
width: 1
#Delete and Update
GridLayout:
cols: 3
pos_hint: {"top": .22, "right": 1}
size_hint: 1, .2
ImageButton:
source: "graphics/buttons/delete.png" if self.state == 'normal' else "graphics/buttons/delete_pressed.png"
ImageButton:
source: "graphics/buttons/update.png" if self.state == 'normal' else "graphics/buttons/update_pressed.png"
ImageButton:
source: "graphics/buttons/undo.png" if self.state == 'normal' else "graphics/buttons/undo_pressed.png"
#Navigation Bar Background
LabelButton:
pos_hint: {"top": .0925, "right": 1}
size_hint: 1, .1
canvas.before:
Color:
rgb: utils.get_color_from_hex("#fafafa")
Rectangle:
size: self.size
pos: self.pos
#Navigation Bar (5 Image Buttons)
GridLayout:
cols: 2
pos_hint: {"top": .0825, "right": 1}
size_hint: 1, .0725
ImageButton:
source: "graphics/navigation/add_person.png" if self.state == 'normal' else "graphics/navigation/add_person_pressed.png"
ImageButton:
source: "graphics/navigation/back.png" if self.state == 'normal' else "graphics/navigation/back_pressed.png"
Мы работаем с PyCharm, где проблемы появляются в окне предварительного просмотра. Спасибо!