Kivy: как объединять ячейки и взаимодействовать с базой данных MySQL

Вот соответствующий фрагмент моего файла mykv.kv:

<RemoveScreen>:
    MyLayout:
        MyLogo:
            GridLayout:
                rows: 6
                cols: 2
                padding: 100,80,100,80
                Label:
                    font_size: "20sp"
                    bold: True
                    color: [1,1,0,1]
                    text: "Part number:"
                Label:
                    text: "Box 02"  
                Label:
                    font_size: "20sp"
                    bold: True
                    color: [1,1,0,1]
                    text: "Part description:"
                Label:
                    text: "Box 04"  
                Label:
                    font_size: "20sp"
                    bold: True
                    color: [1,1,0,1]
                    text: "Quatity on hand:"
                Label:
                    #font_size: "20sp"
                    text: "Box 06"
                Label:
                    font_size: "20sp"
                    bold: True
                    color: [1,1,0,1]
                    text: "Bin location:"   
                Label:
                    text: "Box 08"
                Label:
                    font_size: "20sp"
                    bold: True
                    color: [1,1,0,1]
                    text: "Direction:"  
                Label:
                    text: "Box 10"
                Label:
                    font_size: "20sp"
                    bold: True
                    color: [1,1,0,1]
                    text: "Scan time:"
                Label:
                    text: "Box 12"


        MyButtons:
            #buttons

Приведенный выше код выводит это:

введите здесь описание изображения

Я хотел бы иметь объединенную ячейку сверху, где она выравнивается по центру, левый столбец выравнивается по правому краю, а правый столбец выравнивается по левому краю. левый столбец получит строки из запроса MySQL и заменит строки «Box #» следующим образом:

введите здесь описание изображения

Вопросы. Не могли бы вы реализовать в моем коде, который будет:

  • Объединить первую строку из двух ячеек в одну
  • Выровнять по правому краю левый столбец
  • Выровняйте по левому краю правый столбец (согласно макету выше)

person 3kstc    schedule 05.08.2016    source источник
comment
Так вот вопрос, не могли бы вы написать мне программу :) . Не могли бы вы показать, что вы пытались реализовать в отношении MySQL?   -  person el3ien    schedule 05.08.2016
comment
Также вы должны прочитать это stackoverflow.com/help/how-to-ask и stackoverflow.com/help/mcve . И это не единичный вопрос.   -  person el3ien    schedule 05.08.2016
comment
@EL3PHANTEN У тебя есть полное право злиться, как и я сейчас на себя. Я сбит с толку и застрял. Но ваша помощь имеет большое значение - глядя на ваш код и структуру, я многому учусь! Я благодарен и искренне ценю ваш вклад!   -  person 3kstc    schedule 05.08.2016
comment
Не поймите меня неправильно. Я рад помочь. Это должны быть два отдельных вопроса. Один с mySQL и один для kivy. Думайте о вопросах как о будущем справочнике для других людей, которые ищут конкретную задачу. Как соединение ячеек. Обоснование также может быть в том же вопросе, что и объединение ячеек.   -  person el3ien    schedule 05.08.2016
comment
@EL3PHANTEN Спасибо!!! - Справедливое замечание - я разбил вопрос на компонент MySQL: D   -  person 3kstc    schedule 05.08.2016


Ответы (1)


В kivys GridLayout нет функции объединения ячеек. Но вы можете обойти это, чтобы это выглядело именно так.
В kivy легко комбинировать макеты. И вы можете вкладывать их столько, сколько хотите
Таким образом, вертикальный boxlayout с двумя элементами может стать решением этой проблемы.

vertical BoxLayout
    Head Label  
    GridLayout

Я покажу вам пример здесь.

Файл python — это просто минимальное приложение.

from kivy.app import App

from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

Builder.load_file("kv.kv")


class RemoveScreen(BoxLayout):
    pass


class MyApp(App):
    def build(self):
        return RemoveScreen()


MyApp().run()

И файл kv.kv. Чтобы сделать код чище, я сделал собственные классы Label. Таким образом, вам нужно изменить значения только в одном месте.

<MyLabel1@Label>:
    font_size: "20sp"
    bold: True
    color: [1,1,0,1]
    halign: "right"
    text_size: root.width, None
    size: self.texture_size


<MyLabel2@Label>:
    halign: "left"
    text_size: root.width, None
    size: self.texture_size


<RemoveScreen>:
    orientation: "vertical"

    MyLabel1:
        text: "Headline"
        size_hint: (1,0.05)
        halign: "center"

    GridLayout:
        rows: 6
        cols: 2
        padding: [0, 0, 0, 25]
        spacing: [10,0]

        MyLabel1:
            text: "Part number:"
        MyLabel2:
            text: "Box 02"  

        MyLabel1:
            text: "Part description:"
        MyLabel2:
            text: "Box 04"  

        MyLabel1:
            text: "Quatity on hand:"
        MyLabel2:
            text: "Box 06"

        MyLabel1:
            text: "Bin location:"   
        MyLabel2:
            text: "Box 08"

        MyLabel1:
            text: "Direction:"  
        MyLabel2:
            text: "Box 10"

        MyLabel1:
            text: "Scan time:"
        MyLabel2:
            text: "Box 12"
person el3ien    schedule 05.08.2016