Kivy自定义小部件在框布局中使用时的行为有所不同

时间:2018-12-16 10:42:54

标签: python-3.x kivy

我试图用垂直框布局制作一个带有两个块的窗口,上面的小部件大于下面的小部件。不仅如此,这些小部件还堆叠在左下角的其他部件上,它们的大小相同。

这是我的代码

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()

(Output和Editor类中的按钮仅用于检查它们在结果窗口中各自的父窗口小部件位置)

有人帮助我弄清楚我在做什么错。

1 个答案:

答案 0 :(得分:0)

您的编辑器和输出的行为符合预期,但完全不可见。您将看到的是它们自己的子窗口小部件,两个按钮,每个按钮均未应用位置或大小,因此采用默认的pos(0,0)和size(100,100)。

使Editor和Output类具有某种布局,例如FloatLayout,或者直接删除它们并将Buttons直接添加到BoxLayout。