Пользовательский виджет Kivy ведет себя по-разному при использовании в макете блока - PullRequest
0 голосов
/ 16 декабря 2018

Я пытался сделать окно с двумя блоками с вертикальным расположением блоков, с верхним виджетом больше нижнего.Но вместо этого виджеты накладываются друг на друга в нижнем левом углу, оба имеют одинаковый размер.

Вот мой код

import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.codeinput import CodeInput
from kivy.core.window import Window
from kivy.uix.button import Button

Window.maximize()

class Editor(Widget):
    def __init__(self, *arg, **kwarg):
        super(Editor, self).__init__(*arg, **kwarg)
        self.size_hint= (1, 0.8)
        self.add_widget(Button(text= "1"))

class Output(Widget):
    def __init__(self, *arg, **kwarg):
        super(Output, self).__init__(*arg, **kwarg)
        self.size_hint= (1, 0.2)
        self.add_widget(Button(text= "2"))

class IDE(BoxLayout):
    def __init__(self, *arg, **kwarg):
        super(IDE, self).__init__(*arg, **kwarg)
        self.orientation= "vertical"
        box1= Editor()
        self.add_widget(box1)
        box2=  Output()
        self.add_widget(box2)


class MainApp(App):
    def build(self):
        return IDE()

if __name__=="__main__":
    MainApp().run()

(кнопки используются вВыходные данные и класс редактора просто для проверки их соответствующей позиции родительского виджета в результирующем окне)

Кто-то поможет мне выяснить, что я делаю неправильно.

1 Ответ

0 голосов
/ 16 декабря 2018

Ваш редактор и вывод ведут себя, как и ожидалось, но совершенно невидимы.То, что вы видите, это их собственные дочерние виджеты, две кнопки, каждая из которых не имеет ни позиции, ни размера, примененных к ней, и поэтому принимает значения по умолчанию pos (0, 0) и size (100, 100).

Сделайте классы Editor и Output каким-либо макетом, например FloatLayout, или просто удалите их и добавьте кнопки непосредственно в BoxLayout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...